我有以下结构:
public class SomeObject<T> {
int key;
T value;
...
}
在另一堂课中:
public class TestSomeObject<T> {
SomeObject<T>[] data;
TestSomeObject() {
this.data = (SomeObject<T>[]) new Object[capacity];
}
}
当然,构造函数中的那行完全失败,并带有异常:
[Ljava.lang.Object; cannot be cast to [SomeObject;
这有什么变通方法吗?或者有什么方法可以重组它以使其工作?
答案 0 :(得分:3)
使用
@SuppressWarnings("unchecked")
TestSomeObject() {
this.data = new SomeObject[capacity];
}
答案 1 :(得分:0)
你不能将新的Object()强制转换为SomeObject。
也许你想要这样的东西?
public class TestSomeObject<T> {
SomeObject<T>[] data;
TestSomeObject() {
this.data = new SomeObject[] {new SomeObject<T>()};
}
public static void main(String... args) {
new TestSomeObject<String>();
}
}
答案 2 :(得分:0)
如果对象在“new Object [capacity];”是java.lang.Object,这是正常的。 您无法将新Object转换为任何内容。 你必须这样做:
this.data = new SomeObject<T>[capacity];