genericity(泛型)

泛型的小结: 

1.泛型的原型是Object,定义了泛型只是编译器在做一些验证工作,设置会检查,获取会自动转换,集合支持泛型,泛型约束集合元素。

2.内部原理2个(获取设置)和错误1个(类造型异常)和方便遍历(2个)

******************************************************************************************************

知识点1.(Point用于Test,加粗案例是易错点)

public class Point<T> {
private T x;
private T y;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
public Point(T x, T y) {
super();
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
}

public class demo1 {
public static void main(String[] args) {
// 指定是Integer,创建时是Object类型。只是当成Integer看待
Point<Integer> p1=new Point<Integer>(1,2);
p1.setX(1);//编译器验证
int x1=p1.getX();//自动转换加拆箱
Point p2=p1;//没加泛型
p2.setX("一");
String x2=(String)p2.getX();
System.out.println("x2:"+x2);
x1=p1.getX();
System.out.println("x1:"+x1);//p2改了x,p1获取x又自动转换,发现类造型异常

}
}

public class demo2 {
public static void main(String[] args) {
Collection<String> c=new ArrayList<String>();
c.add("一");//约束了添加元素

//遍历集合元素
for(String str: c){
System.out.println(str);
}
       // 迭代器也指定泛型,泛型的实际类型,应当与它遍历的集合的泛型类型一致 
Iterator<String> it=c.iterator();
while(it.hasNext()){
String str=it.next();//获取元素时不需要再造型了
System.out.println(str);
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值