Java泛型知乎,关于原生类型

众所周知,raw type(原生类型)这一概念是为了在Java推出泛型以后,依然兼容过去的代码所发明的。因此,我们可以得出一条推论,就是假如一个类C已经泛型化了,而你却在使用它的raw type,那说明你压根不知道它是个泛型的类,因此编译器有必要提醒你,哎这里类型需要显式转换一下。

什么叫泛型化(generified type)呢?就以我上面贴的那段代码为例。假如它是Java 5以前创建的类,那时候一定是这么写的:

  public class SomeClass {
      List getListOfPropertyName() { ... }
  }

在Java 5以后,假如它一直没有改成泛型的版本,那么调用它的人必须显式地做类型转换才能获得List<String>:

  SomeClass obj = new SomeClass();
  List<String> list = (List<String>) obj.getListOfPropertyName();

假如后来这个类型后来被泛型化了:

  public class SomeClass<T> { // 类型名字不变
      List<String> getListOfPropertyName() { ... }
  }

调用的人还不知道它已经泛型化了,因此还在使用raw type。那么编译器就仍然按照泛型化之前的方式,提醒你显式类型转换。


作者:GuoGin
链接:https://www.zhihu.com/question/58800149/answer/159649487
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值