[Java]泛型中值得注意的点

  • 泛型(generic)是指参数化类型的能力。
  • 可定义带泛型类型的类/方法/接口,随后编译器会用具体的类型替换它。
  • 使用泛型的主要优点:
    能在编译时而不是运行时检测出错误。
  • 泛型类型必须是引用类型。
  • 创建对象时:例new GenericStack<String>()
    但构造方法实际定义是:例new GenericStack()
  • 可将泛型指定为另一种类型的子类型,这样的泛型类型称为受限的。
  • 定义一个类为泛型类型,需将泛型类型放在类名后面;
    例:GenericStack<E>
    定义一个方法为泛型类型,要将泛型类型放在方法返回类型之前;
    例:<E> void max(E o1,E o2)
  • 不使用类型参数的泛型类称为原始类型;
    例:GenericStack stack=new GenericStack();
  • 通配泛型类型的三种形式:
    ? 非受限通配 <=>? extends Object
    ? extends T 受限通配 T或T的一个未知子类型
    ? super T 下限通配 T或T的一个未知父类型
  • 举例说明:尽管Integer是Object的一个子类型,但GenericStack<Integer>并不是GenericStack<Object>的子类型。
  • 泛型是使用 类型擦除(type erasure)的方法实现的。
  • 泛型存在于编译时,泛型信息在运行时是不可用的。
  • 不管实际的具体类型是什么,泛型类是被它的所有实例所共享的。
  • 由于泛型类型在运行时被消除,因此在使用时有限制:
    1.不能使用泛型类型参数来创建实例;
    例:new E()
    2.不能使用泛型类型参数来创建数组;
    例:E[ ] elements=new E[capacity];
    规避方法:E[ ] elements=(E[ ])new Object[capacity];—–会有警告
    3.不能在静态环境中使用类的泛型类型参数;
    4.异常类中不能使用泛型类型参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值