java 基础之 范型

范型的最佳用途,就是用于实现容器类,实现一个通用的容器。该容器可以存储对象,也可以取出对象,而不用考虑对象的具体类型。


在java中,范型是在编译器中实现的,而不是在虚拟机中实现的,虚拟机对范型一无所知。
因此,编译器一定要把范型类修改为普通类,才能够在虚拟机中执行。在java中,这种技术称之为“擦除”(Type Erasure),也就是用Object类型替换范型。
所有的范型都被替换为Object类型,他被称之为原生类


1、不可以用一个本地类型(如int   float)来替换范型
2、运行时类型检查,不同类型的范型类是等价的(Pair<String>与Pair<Employee>是属于同一个类型Pair),
     这一点要特别注意,即如果a instanceof Pair<String>==true的话,并不代表a.getFirst()的返回值是一个String类型
3、范型类不可以继承Exception类,即范型类不可以作为异常被抛出
4、不可以定义范型数组
5、不可以用范型构造对象,即first = new T(); 是错误的
6、在static方法中不可以使用范型,范型变量也不可以用static关键字来修饰
7、不要在范型类中定义equals(T x)这类方法,因为Object类中也有equals方法,当范型类被擦除后,这两个方法会冲突
8、根据同一个范型类衍生出来的多个类之间没有任何关系,不可以互相赋值
     即Pair<Number> p1;  Pair<Integer> p2;   p1=p2;  这种赋值是错误的。
9、若某个范型类还有同名的非范型类,不要混合使用,坚持使用范型类
     Pair<Manager> managerBuddies = new Pair<Manager>(ceo, cfo);
     Pair rawBuddies = managerBuddies;  这里编译器不会报错,但存在着严重的运行时错误隐患

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值