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

[jfriends-ml 10153] Re: Effective Java 第 1 回議事録



福嶋です。
うまく意図が伝わらなかったか、本当に私が無知なのかわかりかねています。

On Tue, 28 May 2002 22:15:42 +0900, according to the article
"[jfriends-ml 10150] Re: Effective Java 第 1 回議事録"
Kazuya Maebashi <PXU00211@xxxxxxxxxxx> wrote:

> >> >equals()と==をものによって使い分ける、
> >> >というのも混乱しそうで避けたいです。

ここで言いたかったのは、

  本には、パフォーマンス向上のために、Stringの文字列内容比較でも"=="を
  使ってできるようにインスタンスを生成・取得したらいいじゃないか、とい
  うようなことが書いてあるけど、すべてのオブジェクトでこのようなことを
  しない限り、すなわち、すべてのオブジェクト(クラス)のインスタンスが、
  "=="でもequals()でも同じ結果を返そうとしない限り、equals()と"=="で同
  じ結果が得られないオブジェクト(クラス)のインスタンスも存在してしまう。
  Stringを扱う時と、そういったオブジェクトを扱う時で、equals()と"=="を
  使い分けると、混乱しそう

ということです。Stringだけで、equals()と"=="を混同しているわけではあり
ません。

> >> これは混乱するほど難しい代物でもないと思う.これが使い分け
> >> られないようでは,StringとStringBufferの使い分けもできない
> >> だろうし,アルゴリズムのことも理解できてないのでは.

ので、これはおそらくあてはまりません。

> >  これは結局、「使い分けろ」「使い分けるな」「使い分けたほうがよい」
> >「使い分けられる人は使い分けたほうがよい」のどれをおっしゃているの
> >でしょうか? (^^;
> 
> 村山さんじゃないですが、
> 
>  「使い分ける」という言葉を使うこと自体ナンセンス。
>  意味がぜんぜん違うんだから。
> 
> と思いますですが。

もう一度私の主張を言葉を変えて繰り返すと、

  著者は、Stringインスタンスの比較をequals()ではなく、同じ文字列は同じ
  参照を持つようにして、"=="を使って比較した方がパフォーマンスが向上す
  るといっている。それはその通りだと思うが、String以外のオブジェクトで
  それができるとは限らない。そうすると、Stringの場合は"=="で比較するけ
  ど、Xxxxの場合はequals()で比較、とかになり、プログラマは混乱するので
  はないか?

ということです。

----------------------------------------
(株)PFU ソフトプロダクト事業部第二開発部
  福嶋 航  w.fukushima@xxxxxxxxxxxxxxx