特定Java通用数组创建
可能重复:特定Java通用数组创建,java,Java,可能重复: 如何用Java初始化这个数组 Vector<Integer>[] c; Vector[]c; 我已经试过了: Vector<Vector<Integer>[]> a = new Vector<Vector<Integer>[]>(); Vector<Integer>[] c = (Vector<Integer>[])a.toArray(); 向量a=新向量(); 向量[]c=(向量[])a.t
如何用Java初始化这个数组
Vector<Integer>[] c;
Vector[]c;
我已经试过了:
Vector<Vector<Integer>[]> a = new Vector<Vector<Integer>[]>();
Vector<Integer>[] c = (Vector<Integer>[])a.toArray();
向量a=新向量();
向量[]c=(向量[])a.toArray();
出现以下错误:
线程“main”java.lang.ClassCastException中的异常:
[Ljava.lang.Object;无法强制转换为[Ljava.util.Vector;at
app.Program.main(Program.java:38)位于
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于
invoke(NativeMethodAccessorImpl.java:57)
在
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:601)
com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
编辑:
我的问题是,我是一个类的客户端,该类接收一个泛型数组“T[]args”参数,在我的例子中,T是一个泛型类型,比如向量,谢谢
我是Java新手。我认为您无法创建泛型数组。 看看这个
这是因为类型信息在运行时不可用。如果可以避免的话,我不会使用Vector。它在Java 1.2(1998)中被ArrayList取代
这是一个向量数组:
Vector<Integer>[] c = new Vector[2];
c[0] = new Vector<Integer>();
c[0] = new Vector<Object>(); // <- compiletime error
c[0].add(new Integer(0));
您可以删除泛型声明
Vector[] c = new Vector[10];
或者用另一个向量或列表类型替换数组
List<Vector<Integer>> list = new ArrayList<Vector<Integer>>();
List List=new ArrayList();
你想做什么?向量和数组在概念上是相似的,但它们并不相同。你真的想创建一个包含整数数组的向量吗?如果你使用集合,为什么要使用数组?从你的要求来看,似乎你想要一个向量数组。向量列表不是更有用吗是否有意义?很难说清楚为什么需要数组。@Aaron Kurtzhals不,我正在尝试创建一个泛型类型的数组。
Vector[] b = c; // <- warning
Vector<Double>[] a = b; // <- warning
a[1] = new Vector<Double>(); // <- the array itself allows that
a[1].add(new Double(0));
for (Vector<Integer> vector : c) {
Integer value = vector.get(0); // <- BOOM! (on second iteration)
}
Vector[] c = new Vector[10];
List<Vector<Integer>> list = new ArrayList<Vector<Integer>>();