当我运行此代码时,得到ClassCastException
错误,因为我在运行代码时将d隐式转换为double。但是,如果我将对d的引用更改为Object[]
,那么它不能作为设置函数的参数。如果我改变所设定的功能来接受Object[]
然后一切工作正常,但是后来有人来电话的对象,它是N
类型的未设置的课程将在运行时失败。从泛型类中返回数组
我需要一个解决方案,可以get()
旧阵列(或其克隆),并可以set()
数据到一个新的阵列。
public class Foo<N> {
public static void main(String[] args) {
Foo<Double> foo = new Foo<Double>();
Double[] d = foo.get();
// do stuff to d ...
foo.set(d);
}
N[] data;
public Foo() {
data = (N[]) new Object[2];
}
public N[] get() {
return (N[]) data;
}
public void set(N[] data) {
this.data = data;
}
}
可能的重复[如何在Java中创建通用数组?](http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java) – Julien
这不是一个那个q的重复。 – avisnacks
你可以使用这个http:// stackoverflow。com/a/3403976/2513573来提取类型和Array.newInstance来创建数组 – AdamSkywalker