- PR -

文字列をequalsで判定する時

投稿者投稿内容
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-02-18 14:53
引用:

あぶぽんさんの書き込み (2008-02-18 14:21) より:
引用:

nagiseさんの書き込み (2008-02-18 13:58) より:
コード:
// 別の変数に代入
Object o = str;
System.out.println(str.equals("hoge")); // Objectのsqulasが呼ばれる





それって、本当ですか?

Stringクラスは、Objectクラスのequalsメソッドをオーバーライドしていない
ということですか!?




nagiseさんの話はJavaの話ではなく、
ある仮定を置いたJavaに似たJavaでない架空の言語の話では?

後、引用中の「str.equals("hoge")」の部分は「o.equals("hoge")」のタイプミスじゃないかと思います。

#元の内容から脱線しすぎなので続けたければ、
#別スレを立てることをお勧めします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-02-18 15:29
よねKENさんがフォローしてくれていますが、
要するにあぶぽんさんの案、つまるところ

コード:
object obj = null;
if (obj.equals("Hoge")) {
    // なんか
}


をやろうとすると、変数型に基づいて挙動が決まらなくてはならなくて、
そうだと仮定したとしたならば、代入するとおかしくなるよね、という話題です。
私のコード間違えていますね。

コード:
System.out.println(o.equals("hoge")); // Objectのsqulasが呼ばれる


ですね。
いずれもJavaの話題ではなく、あぶぽんさんの案を仮定すると
こういう問題があるという話題です。

これ以上は脱線が過ぎますかね。自重します。
じゅり
会議室デビュー日: 2007/06/29
投稿数: 6
投稿日時: 2008-12-19 07:31
今さらですが、きしださんのブログにてJDK7では

if (s?.equals("リテラル")){
...
}

とかけばいいらしいと書いてありました。
ソースは確認してませんのでご了承くださいませ。

スキルアップ/キャリアアップ(JOB@IT)