当前位置: 代码迷 >> java >> 具有泛型的对象的Java数组
  详细解决方案

具有泛型的对象的Java数组

热度:26   发布时间:2023-07-25 19:45:09.0

我有以下结构:

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;

有什么解决方法吗? 还是有什么办法可以对其进行重组以使其正常工作?

采用

@SuppressWarnings("unchecked")
TestSomeObject() {
     this.data =  new SomeObject[capacity];
}

您不能将新的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>();
  }

}

如果对象在“新对象[容量];”中 是java.lang.Object,这很正常。 您不能将新对象投射到任何对象中。 你必须做:

this.data = new SomeObject<T>[capacity];
  相关解决方案