假设我必须创建一个存储ArrayList的Integers数组,并且数组大小为10。
下面的代码可以做到这一点:
ArrayList<Integer>[] pl2 = new ArrayList[10];
问题1:
我认为更合适的代码是
ArrayList<Integer>[] pl2 = new ArrayList<Integer>[10];
为什么这不起作用?
问题2:
下面两个都编译
ArrayList<Integer>[] pl2 = new ArrayList[10];
ArrayList[] pl3 = new ArrayList[10];
有什么区别尽可能的引用声明pl2
和pl3
关注?
问题1:
基本上,这是Java语言禁止的。Java语言规范中的泛型部分对此进行了介绍。
使用时
ArrayList<Integer>[] pl2 = new ArrayList[10]; // warning
您会收到编译器警告,因为以下示例将进行编译(为每行代码生成警告):
ArrayList wrongRawArrayList = new ArrayList(); // warning
wrongRawArrayList.add("string1"); // warning
wrongRawArrayList.add("string2"); // warning
pl2[0] = wrongRawArrayList; // warning
但是现在您本应包含ArrayList
的数组Integer
完全包含错误ArrayList
的String
对象。
问题2:
正如已经回答的那样,声明of p12
为您提供了编译时检查,并在从中获取项目时使您不必使用强制转换ArrayList
。
稍微修改了前面的示例:
ArrayList<Integer>[] pl2 = new ArrayList[10]; // warning
ArrayList<String> wrongArrayList = new ArrayList<String>(); // OK!
wrongArrayList.add("string1"); // OK!
wrongArrayList.add("string2"); // OK!
pl2[0] = wrongArrayList; // ERROR
现在,由于您使用的是泛型,因此无法编译。但是如果你用
ArrayList[] pl2 = new ArrayList[10];
您将获得与第一个示例相同的结果。
问题内容: 如何创建泛型类型的数组?通用方法如何工作?它返回通用数组的副本。因此可以创建通用数组。但是如何?怎么能写一个类似的方法呢? 问题答案: 如果需要在运行时创建它,则至少需要在此时知道类型,因此可以使用以下方法: where 是泛型类型,是的类,并且是初始大小。 这里的文件
我不想为每个类型T编写这个方法只是为了调用getMessage()并将其传递给下一个方法。 有可能写出这样的方法吗?我只想访问ConstraintViolation接口的方法,这些方法不依赖于类型T(如字符串getMessage())。
问题内容: 我有一个我必须验证问题值的对象,这些对象的某些属性是自定义对象的数组。这样一来,这将涉及到数组的各个元素。为每个元素执行吸气剂,例如: 这是我需要达到的。我已使用带有属性列表的枚举以以下方式提取了数据。 致电: 我将使用数组中不同类型和不同值的多个数组。我想创建一个如下的方法。 这给了我多个错误,这些错误主要与repeatingGrp []有关。数组类型应与枚举名称相同。是否可以创建这
问题内容: 是否可以在Java中创建泛型类型的实例?我正在根据我所看到的答案进行思考no(由于类型擦除),但是如果有人能看到我所缺少的内容,我将很感兴趣: 编辑:事实证明,超级类型令牌可以用于解决我的问题,但是它需要很多基于反射的代码,如下面的一些答案所示。 问题答案: 你是对的。你做不到。但你可以将其更改为 但这有效。以工厂模式包装它会使它更具容忍性。
我试着做这样的事:- myObject是一个类。我得到这个错误:-泛型数组创建(箭头指向New.)