标签:java generics language-design
关于Java中泛型的另一个非常基本的问题,直接来自previous question of mine.我们不是通过编写下面的代码两次向编译器提供相同的信息.为什么我们需要在左侧和右侧提供两者?
List<Number> numbers = new ArrayList<Number>();
编辑:正如我在一些答案中看到的那样,它在Java 7以后不再需要了.但我想知道在java 7之前它是不可能的原因是什么?
解决方法:
因为pre java 7不支持构造函数的泛型类型推断.这是由钻石操作符在java 7中解决的.
您还可以编写通用工厂方法作为解决方法,如:
public static <T> List<T> createArrayList() {
return new ArrayList<T>();
}
然后
List<Integer> list = createArrayList();
哪个有问题但有效.对于地图和其他多论证泛型类型而言,也许还不错.
编辑:也许语言设计者决定不支持泛型类型推断,因为他们实现了类型擦除的泛型.我认为另一个值得怀疑的决定……否则不要认为在早期的java版本中有任何严重的理由反对这个功能. (根据Peter Lawrey的附录,它仍然不存在.)
标签:java,generics,language-design 来源: https://codeday.me/bug/20190725/1537569.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。