package collection;
/**
* 泛型是编译器认可,而非虚拟机
* 编译器会将泛型改为Object,所以泛型的实际类型就是
* Object
* 在使用泛型是,编译器回辅助做两个操作
* 1:对泛型设置值时,编译器回检查该值的类型
* 是否玉泛型一直,不一致则编译不通过
* 2:在获取泛型值时,编译器回添加向下造型的代码
*/
public class TypeDemo2 {
public static void main(String[] args){
Location <Integer> loc1 = new Location<Integer>(1,2);
/*
编译器回检查实际赋值是覅u符合泛型类型
要求,不符合编译不通过
*/
loc1.setX(1);
//loc1.setX("1"); // 编译不通过
/*
编译器回在编译时不全向下造型的代码为
int x1 = (Integer)loc1.getX();
*/
int x1 = loc1.getX();
/*
泛型可以不指定,不指定则按照默认的
Object看待
*/
Location loc2 = loc1;
System.out.println("loc2"+loc2);
loc2.setX("三");
System.out.println("loc2"+loc2);
//再次以loc1角度获取x
x1 = loc1.getX();//类造型异常
System.out.println("x1"+x1);
}
}
JAVA泛型2
最新推荐文章于 2022-03-08 00:49:34 发布