私は classFirstClass<O>
とclass を持っていて、 O[] をfrom から呼び出されるルーチン内SecondClass<O>
に作成したいと考えています。ここで、O はジェネリック クラス パラメータです。これを行う方法が見つかりません。SecondClass<O>
FirstClass<O>
ArrayList<O>
ループの本体内で非常に頻繁に O[] から要素を取得する必要があり、アルゴリズムの実行時間にとって重要であるため、特に 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]
}
}
Web で見つけたいくつかの方法ですが、私の場合は機能しません。
- 使用します
O[] array = (O[]) new Object[n];
が、コンパイルされません。 Object[] array = new Object[n];
配列から何かを要求するたびに (O) キャストを使用して実行しますが、これは遅すぎますArray.newInstance(Class<O> type, int n);
、 withO o;
を使用しますが、 CAP#1 の意味が何であれ、typeではなくtypetype=o.class
であると不平を言います...type
Class<CAP#1>
Class<O>
最適な実行速度を念頭に置いて、Javaでこれを適切に行うにはどうすればよいですか?