dsg*_*dsg 7 java arrays generics multidimensional-array
如何在java中创建通用项的多维数组?
考虑班级:
class A<T>
{
T t;
public A(T t) { this.t = t; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个多维数组时:
A<String>[][] array = new A<String>[2][3];
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
generic array creation
A<String>[][] array = new A<String>[2][3];
^
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
A<String>[][] array = (A<String>[][]) (new Object[2]3]);
Run Code Online (Sandbox Code Playgroud)
但这只是抛出: java.lang.ClassCastException
有什么问题?
(我预计人们会建议使用列表.请解释如何使用数组实现此目的.)
我能够做这样的事情
@SuppressWarnings("unchecked")
A<String>[][] array = (A<String>[][]) Array.newInstance(new A<String>("dummy").getClass(), 2, 3);
Run Code Online (Sandbox Code Playgroud)
编辑:
根据 @dsg 的建议,以下内容将跳过临时对象的创建。
@SuppressWarnings("unchecked")
A<String>[][] array = (A<String>[][]) Array.newInstance(A.class, 2, 3);
Run Code Online (Sandbox Code Playgroud)
或(来自@irreputable的建议)
@SuppressWarnings("unchecked")
A<String>[][] array = new A[2][3];
Run Code Online (Sandbox Code Playgroud)