我可以在泛型中使用Class吗?

时间:2017-08-29 05:36:37

标签: java java-7

如果我知道数组列表运行时的数据类型,我可以在泛型中使用它吗?

例如,我可以在声明下面的数组列表时使用Class(比如String.class)。

List objList = new ArrayList<DestinationClassToBeReplaced>();

3 个答案:

答案 0 :(得分:2)

List<String> objList = new ArrayList<>();

本身就是为了做到这一点而List javadoc清楚地说明了这一点。

Type Parameters:
E - the type of elements in this list

答案 1 :(得分:1)

您可以这样写:

List<DestinationClassToBeReplaced> objList = new ArrayList<>();

<>运算符称为Diamond运算符。

以上代码推断使用JDK 7 Diamond Operator

的泛型类的实例化参数类型

答案 2 :(得分:1)

可以使用三种方式来声明通用列表

方法1:使用泛型,即两侧

List<Integer> list = new ArrayList<Integer>();

方法2:左侧使用泛型,右侧使用菱形操作符

List<Integer> list = new ArrayList<>();

方法3:仅在左侧使用通用

List<Integer> list = new ArrayList(); 

在上述三个中,第二种方法是在java 7中引入的。

如果要使用泛型,则必须在左侧指定类型才能使用泛型。 请注意,在编译期间检查泛型后,编译器会抛弃泛型的类型限制。

仅在右侧添加通用将无助于您。