问题描述
我有以下结构:
public class SomeObject<T> {
int key;
T value;
...
}
在另一堂课中:
public class TestSomeObject<T> {
SomeObject<T>[] data;
TestSomeObject() {
this.data = (SomeObject<T>[]) new Object[capacity];
}
}
当然,构造函数中的该行完全失败,并带有Exception:
[Ljava.lang.Object; cannot be cast to [SomeObject;
有什么解决方法吗? 还是有什么办法可以对其进行重组以使其正常工作?
1楼
采用
@SuppressWarnings("unchecked")
TestSomeObject() {
this.data = new SomeObject[capacity];
}
2楼
您不能将新的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>();
}
}
3楼
如果对象在“新对象[容量];”中 是java.lang.Object,这很正常。 您不能将新对象投射到任何对象中。 你必须做:
this.data = new SomeObject<T>[capacity];