Java:通用数组创建错误?

时间:2015-10-12 01:11:29

标签: java arrays generics

在非泛型数组上获取通用数组创建错误,我认为?

所以,这段代码很好,很直接。

public class test {
  private subTest[] subTests;
  private class subTest {

  }

  public test(int size) {
    subTests = new subTest[size];
  }
}

但我实际上要做的事情更像是这样:

public class test<T> {
  private subTest[] subTests;
  private T[] arrayOfGenerics; 

  private class subTest {

  }

  public test(int size, int size2) {
    arrayOfGenerics = (T[]) new Object[size];   //This line works fine
    subTests = new subTest[size2];              //This line is the one giving me a 'Generic array creation' error
  }
}

1 个答案:

答案 0 :(得分:3)

subTesttest的内部类,因此test的类型参数在subTest内可见。因此,您正在尝试创建泛型类型

的数组
test<T>.subTest[]

您可以通过使类subTest成为静态嵌套类来解决此问题:

private static class subTest

如果这样做,数组的类型只是

test.subTest[]