我有一个 classFirstClass<O>
和一个 class SecondClass<O>
,我想在SecondClass<O>
一个调用 from 的例程中创建一个 O[] FirstClass<O>
,其中 O 是一个通用类参数。我找不到如何做到这一点。
我需要一个 O[] 专门(而不是ArrayList<O>
或类似),因为我需要经常在循环体内从中获取元素,这对我的算法的执行时间很重要。
所以我想要一些类似的东西。
public class FirstClass<O> {
void someRoutine(n and other params) {
//Do some stuff
SecondClass<O> = new SecondClass(n, possibly_other_params);
//Do some stuff
}
}
和
public class SecondClass<O> {
O[] myArray;
SecondClass<O>(int n, possibly_other_params) {
//Here the constructor that creates an O[n]
}
}
我在网上找到了一些方法,但不适用于我的情况:
- 使用
O[] array = (O[]) new Object[n];
但不会编译。 - 每次我从数组请求某些东西时使用
Object[] array = new Object[n];
并执行 (O) 强制转换,但这太慢了 - 使用
Array.newInstance(Class<O> type, int n);
, withO o;
andtype=o.class
但它抱怨type
现在是 typeClass<CAP#1>
而不是 typeClass<O>
,无论 CAP#1 是什么意思......
在考虑最佳执行速度的情况下,我应该如何在 Java 中正确执行此操作?