OK、ここに私が直面している小さな問題があります-Javaでキャストする簡単な方法はありますか
ArrayList<Object[]> array;
に
Object[][] data;
?
Object[][] data=array.toArray();
Object[] の内部は、オブジェクト自体の型として扱われます。次に、それらは独自の配列に入れられ、オブジェクトの配列オブジェクトの配列、または単に 2 次元配列になります。
キャスティングはあなたが探している解決策ではありません。キャストにより、基本的に、特定のクラス型にキャストするメソッドを使用できるようになります。キャストの例:
(((ClassA)classB).method())
したがって、戻り値は、method() を含むインスタンス化された classB オブジェクトから ClassA オブジェクト内に配置できます。
一方、やりたいことは、多次元配列または 2D 配列を作成することです。これは基本的に配列の配列です。ここで、arrayA[i] = arrayB[];
例えば:
Object[] objectArray = new Object[5];
Object[][] = objectArray2D = new Object[][];
objectArray2D[i] = objectArray;
ただし、多次元配列を作成する場合、なぜ配列インスタンスを 1 つだけフィードするのでしょうか。基本的に、上記の例で作成するのは配列内の配列であり、配列内のすべてのオブジェクトの配列インデックスを 1 つだけ指定するため、1 つの配列がある場合と同じになりますが、1 つ追加配置。説明させてください:
objectArray[0] == objectArray の最初のスロットに配置したオブジェクト
while objectArray2D[0][0] == objectArray[0] のオブジェクトとまったく同じオブジェクト
1 つの配列に対して多次元配列を使用しても、何の利点も得られません。2D 配列にインデックス [1][0] を要求すると、範囲外の例外が発生します。
最後に、int[] や string[] など、特定の形式の配列を作成することをお勧めします。Object[] 配列の問題は、オブジェクトと見なされるものは何でも配列に格納できるため、1 つの配列内にさまざまなタイプのオブジェクトのクラスターが存在する可能性があることです。objectArray[0] = int 1; を持つことができる例 objectArray[1] = 文字列 1; 配列の使用を非常に具体的にしたい場合を除き、1 つのオブジェクト型を配列として使用することをお勧めします。
いずれにせよ、やりたいことを正確に行うための最終的な解決策は次のとおりです。
ArrayList<Object[]> array;
Object[][] data;
public void changeToAnArray(ArrayList<Object[]> array, Object[][] data)
{
this.array = array.toArray();
this.data[0] = array;
}
また、ArrayList の要点は、インデックスを解析することなく、本質的に 2D 配列を持つことです。
私が間違っている部分を誰でも自由に修正してください。