Java 使用genric和position的区别
我有以下代码Java 使用genric和position的区别,java,oop,generics,computer-science,Java,Oop,Generics,Computer Science,我有以下代码 Gen_Class<Integer> test = new Gen_Class<Integer>(); Gen_类测试=新Gen_类(); 那么,开头的和结尾的有什么区别呢。 为什么我们要写两次呢 有什么好处吗? 如果我们没有在开头添加,会发生什么?如果您使用的是Java 7或8,您可以省略第二个整数,如下所示: Gen_Class<Integer> test = new Gen_Class<>(); Gen_类测试=新Gen_
Gen_Class<Integer> test = new Gen_Class<Integer>();
Gen_类测试=新Gen_类();
那么,开头的和结尾的有什么区别呢。
为什么我们要写两次呢
有什么好处吗?
如果我们没有在开头添加,会发生什么?如果您使用的是Java 7或8,您可以省略第二个整数,如下所示:
Gen_Class<Integer> test = new Gen_Class<>();
Gen_类测试=新Gen_类();
那么,开头和结尾的区别是什么呢。为什么我们要写两次呢
本质上没有“区别”;您只需在两侧指定完整的类型名称。类型已参数化,因此如果没有类型参数,则类型名称不完整。然而,正如@JigarJoshi在他的评论中所指出的,Java 7在许多情况下都可以推断类型参数,允许您只需在赋值的右侧编写空的
括号,以及一些方法参数
有什么好处吗?如果我们一开始没有添加,会发生什么
如果在任何一侧都不使用类型参数,则指定的是原始类型,而不是参数化类型。其后果取决于你是不考虑左派、右派,还是两者兼而有之
如果将它们保留在左侧,则您的
Gen\u类
将成为Gen\u类
,这实际上与Gen\u类
相同。这改变了语义;以前可能要求您传递整数的地方现在可以接受任何对象
(可能会或可能不会导致问题),而暴露整数
值的方法和字段现在可以暴露对象
值。在java 7之前,您必须在两侧指定类型,对于Java7以后的版本,您可以忽略右侧类型规范,只需将其保留为
很好的解释:)