[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: ポインターと参照




> >  public void modify_string(String str) {
> >    String tmp = str.substring(0,3);
> >    str = tmp;
> >  }
この例の場合、副作用を期待するならStringBufferを引数にとって、
それを(新たなオブジェクトを作らずに)直接操作すればOKです。
例えば、stringbuf.setLength(3); です。

ですから、以下はちょっと違うなあと感じます。
> 多分 Java の仕様を決めた人は、副作用を持つメソッドは書かせたくなくて
> 今のような言語仕様を採用したのだと思います。

Javaに限らず OOPのスタイルとして、
「オブジェクトに副作用を起こす処理は、そのオブジェクトのメソッドとして
実現せよ(無縁な関数・メソッドに引数として渡して処理するな)」
というのがあると思います。
上記のコードは、その典型みたい例ですね。