import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class GenericTest {
public static void main(String[] args) {
List list = new ArrayList();
// 准备对象
Dog d = new Dog();
Cat c = new Cat();
// 将对象添加到集合当中
list.add(d);
list.add(c);
// 遍历集合,取出Dog吃骨头,取出Cat吃鱼
Iterator iterator = list.iterator();
while (iterator.hasNext()){
Object obj = iterator.next();
if (obj instanceof Dog){
Dog dog = (Dog)obj;
dog.eatBone();
}else if(obj instanceof Cat){
Cat cat = (Cat)obj;
cat.eatFish();
}
}
}
}
class Animal{ }
class Dog extends Animal{
public void eatBone(){
System.out.println("狗吃骨头");
}
}
class Cat extends Animal{
public void eatFish(){
System.out.println("猫吃鱼");
}
}
使用泛型:import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class GenericTest {
public static void main(String[] args) {
// 使用泛型,List集合中只允许存储Animal类型的数据
// 用泛型来指定List集合中存储的数据类型
List<Animal> list = new ArrayList<Animal>();
// 准备对象
Dog d = new Dog();
Cat c = new Cat();
// 将对象添加到集合当中
list.add(d);
list.add(c);
// 迭代器迭代Animal类型
Iterator<Animal> iterator = list.iterator();
while (iterator.hasNext()){
// 调用Animal父类的方法不需要转型
Animal obj = iterator.next();
// 调用子类特有的方法需要转型
if (obj instanceof Dog){
Dog dog = (Dog)obj;
dog.eatBone();
}
if (obj instanceof Cat){
Cat cat = (Cat)obj;
cat.eatFish();
}
}
}
}
class Animal{ }
class Dog extends Animal{
public void eatBone(){
System.out.println("狗吃骨头");
}
}
class Cat extends Animal{
public void eatFish(){
System.out.println("猫吃鱼");
}
}
JDK8之后引入:自动类型推断机制(钻石表达式)public class GenericTest {
public static void main(String[] args) {
// ArrayList<>类型会自动推断
List<Animal> list = new ArrayList<>();
}
}
自定义泛型:public class GenericTest<abc> {
public static void main(String[] args) {
// 创建对象的时候指定泛型 String
GenericTest<String> gt = new GenericTest<>();
// 参数类型String
gt.doSome("sm");
}
public void doSome(abc o){
System.out.println(o);
}
}
自定义泛型的时候,尖括号里面可以随便写,一般写E/T都可以!声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!