java钻石表达式_Generic 泛型 <> 钻石表达式

packagecom.javaSe;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;/*1 JDK5.0之后推出的新特性:泛型

2 泛型这种语法机制,只在程序编译阶段起作用,只是给编译器作参考的。(运行阶段泛型没用!)

3 使用了泛型的好处是什么?

第一:集合中存储的元素类型统一了。

第二:从集合中取出的元素类型是泛型指定的类型,不需要进行大量的“向下转型”!

4 泛型的缺点是什么?

导致集合中存储的元素缺乏多样性!

大多数业务中,集合中的元素类型还是统一的,所以这种泛型特性被大家所认可。*/

public classGenericTest01 {public static voidmain(String[] args) {/*// 不使用泛型机制,分析程序存在的缺点

List myList = new ArrayList();

// 准备对象

Cat c = new Cat();

Bird b = new Bird();

// 将对象添加到集合当中

myList.add(c);

myList.add(b);

// 遍历集合,取出Cat让他抓老鼠,取出Bird让它飞。

Iterator it = myList.iterator();

while(it.hasNext()){*//*if (obj instanceof Cat){

((Cat) obj).catchMouse();

}else if(obj instanceof Bird){

((Bird) obj).fiy();

}*//*// 没有这个语法,通过迭代器取出就是Object

// Animal a = it.next();

// obj中没有move方法,无法调用,需要向下转型!

Object obj = it.next();

if(obj instanceof Animal){

Animal a = (Animal)obj;

a.move();

}

}*/

//使用JDK5之后的泛型机制//使用泛型List之后,表示List集合中只允许存储Animal类型的数据。//用泛型来指定集合中存储的数据类型

List list = new ArrayList();//指定List集合中只能存储Animal类型的对象,那么存储String类型就报错了。//这样用了泛型之后,集合中的元素数据类型更加统一了。//list.add("abc");//准备对象

Cat c = newCat();

Bird b= newBird();//将对象添加到集合当中

list.add(c);

list.add(b);//获取迭代器

Iterator it =list.iterator();while(it.hasNext()){//使用泛型之后,每一次迭代返回的数据都是Animal类型。

/*Animal a = it.next();

a.move();*/Animal a=it.next();if(a instanceofCat){

((Cat) a).catchMouse();

}if(a instanceofBird){

((Bird) a).fiy();

}

}

}

}classAnimal{public voidmove(){

System.out.println("动物在移动!");

}

}class Cat extendsAnimal{public voidcatchMouse(){

System.out.println("猫抓老鼠!");

}

}class Bird extendsAnimal{public voidfiy(){

System.out.println("鸟儿在飞翔!");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值