私は 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であると不平を言います...typeClass<CAP#1>Class<O>
最適な実行速度を念頭に置いて、Javaでこれを適切に行うにはどうすればよいですか?