问题1:
基本上,这是Java语言禁止的。Java语言规范中的泛型部分对此进行了介绍。
使用时
ArrayList<Integer>[] pl2 = new ArrayList[10]; // warning
您会收到编译器警告,因为以下示例将进行编译(为每行代码生成警告):
ArrayList wrongRawArrayList = new ArrayList(); // warningwrongRawArrayList.add("string1"); // warning wrongRawArrayList.add("string2"); // warningpl2[0] = wrongRawArrayList; // warning
但是现在您本应包含
ArrayList的数组
Integer完全包含错误
ArrayList的
String对象。
问题2:
正如已经回答的那样,声明of
p12为您提供了编译时检查,并在从中获取项目时使您不必使用强制转换
ArrayList。
稍微修改了前面的示例:
ArrayList<Integer>[] pl2 = new ArrayList[10]; // warningArrayList<String> wrongArrayList = new ArrayList<String>(); // OK!wrongArrayList.add("string1"); // OK! wrongArrayList.add("string2"); // OK!pl2[0] = wrongArrayList; // ERROR
现在,由于您使用的是泛型,因此无法编译。但是如果你用
ArrayList[] pl2 = new ArrayList[10];
您将获得与第一个示例相同的结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)