- 638 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 05:08:20 ]
- C++からJavaに引っ越してきたばかりの初心者です。
class A { private int data; //外部からは見えない private setter(int data) { this.data = data; } //外部からは使えない public int getter() { return data; } } というクラスがあったとき、data は int 型なので、この値が外部からは 絶対に変更されないことは保証されていると思います(C++と同じ)。 しかし、これが基本型の int ではなく、一般的なクラスだった場合、 例えば StringBuffer だったりしたら、外部からでも StringBuffer str = getter(); str.append("hoge"); みたいにして操作することは可能です(ここはC++と違う)。 これを防ぐために思いつくのは、getter() で data そのものではなく data のコピーを返すことですが、 public String getter() { return data.toString(); } 1. これは標準的な方法ですか? 2. ざっと見たところ、StringBuffer と違って String には インスタンスそのものが保持している値を直接書き換える 関数はないようですが、int と同じように扱っても安全ですか? 3. StringBuffer.clone() って使えるのが自然なような気がするんですが、 なんで使えないんですか?
|

|