私はJavaに慣れていないので、なぜこのようにプライベート属性の値をセッターを使わずに設定できるのだろうか? :これは合法である理由Javaでgetterを使用してプライベートクラス属性の値を設定するのはなぜですか?
class Example {
private int[] thing;
public void initialize() {
thing = new int[10];
}
public int[] getThing() {
return thing;
}
}
class myclass {
public static void main(String args[]) {
Example e = new Example();
e.initialize();
e.getThing()[0] = 1;
System.out.println(e.getThing()[0]) // value is still 1...
}
私は本当に理解していない...
編集:私は、ものの価値はないものへの参照を返すようにe.getThing()を予想し、それがあっても"事"はプライベートなので、私はそれを直接変更することはできないと思った。
他のクラス**のプライベートメンバー**に値を設定してもよろしいですか? –
あなたは何を期待していますか? – AxelH
物事を読ませたい場合は、私は2つの方法のうちの1つでこれを行います。 1)配列の守備的コピーを作成します。ここで、 'new'を使って別の配列を作成し、これを返します。 2)List(例えばArrayList)を代わりに使用し、 'Iterable'(すべてのリストによって実装されたインターフェース)を返します。 'Iterable'を使って実行できる唯一のことは、(iterable内のオブジェクトを集合体である場合には変更することはできますが)多かれ少なかれ反復することです。 –
patrik