分享

Java泛型(generic type),关于原生类型(raw type)

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

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

  1. public class SomeClass {
  2. List getListOfPropertyName() { ... }
  3. }

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

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

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

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

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


作者:GuoGin

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多