相同泛型类型的泛型数组的泛型类

Yan*_*hon 3 java arrays generics

我有一个方法签名就像

public <T extends SomeClass> T[] findAll(Class<T> oClass, String condition)
Run Code Online (Sandbox Code Playgroud)

但我不确定如何从中创建该T[]类型Class<T>.我已经尝试过使用Collection<T>但是我无法强制转换(T[]) collection.toArray()Array.newInstance(Class<?>, int)要求一个数组类(即T[]),这是没有用的,也是多余的.

另外,显而易见的是,new T[n]它不起作用.

我认为这很容易,但我现在麻木了解决方案:)

谢谢.

Mar*_*ers 5

newInstance不要求数组类,它要求组件类型.尽管未经检查的强制转换和通用数组存在常见问题,但它仍然可以正常工作.

T[]  myArr = (T[]) Array.newInstance(oClass, length);
Run Code Online (Sandbox Code Playgroud)

但是为什么要混合数组和泛型呢?这只会导致头痛.使用Collections API中的内容,例如List.