アレイのゲッターとセッターについて、いくつか質問があります。私たちはそのコンストラクタ内の配列のプライベートコピーを作成し、このようなクラスを、持っているとしますアレイのゲッターとセッター
import java.util.Arrays;
public class Foo
{
private int[] array;
public Foo(int[] array) {
this.array = Arrays.copyOf(array, array.length);
}
}
我々が配列のみゲッターとセッターを経由して変異した/アクセスできるようにしたいです。私たちは、ユーザが直接、配列の要素を変更することができます参照を返しているとして、それはゲッターの目的に反し
public int[] getArray() {
return array;
}
:私たちはこのようになりますゲッターを持っている場合。例えばセッターのための同様
public int getElement(int index) {
return array[index];
}
:
Foo foo = new Foo(someArray);
...
int[] bar = foo.getArray();
bar[0] = 123; // Now foo.array[0] = 123 and we haven't used a setter!
だから、おそらく我々はこのようなものが必要。しかし、我々は要素ごとの基準で物事をやっているならば、我々はまた、長さを得るための手段を提供する必要があるとしている:
public int getArrayLength() {
return array.length;
}
これは、すでに1次元配列のために少し厄介です、しかし、我々は代わりに多次元配列を持っていると言う:
import java.util.Arrays;
public class Foo
{
private int[][][] array;
public Foo(int[][][] array) {
// Code for making a deep copy here
}
public int getElement(int i, int j, int k) {
return array[i][j][k];
}
public void setElement(int i, int j, int k, int value) {
array[i][j][k] = value;
}
public int getArrayLength() {
return array.length;
}
public int getArrayLength(int i) {
return array[i].length;
}
public int getArrayLength(int i, int j) {
return array[i][j].length;
}
}
これは、このような簡単な作業のために多くのコードであり、より重要なことは、実際に使用する混乱です。私たちは本当にこのようなもので終わらなければなりませんか、それとももっと良い方法がありますか?私はその場所を全面的に見てきましたが、このための「標準的な練習」はないようです。
あなたはリストを見ましたか? – Jacob
配列は1900年代です。 – Marcelo