You、==もSyntax SugerにしちゃいなYO!(紅い人風)
odzさんが、
しかし、「+」 を使った文字列連結の Syntax Suger があるんだから、equals も Syntax Suger にすればよかったのにと、と割と本気で思う。
定数との比較 #3 - odz buffer
と言われていて同意。
どうせStringは+や+=は特別扱いなのだし、
==も使い道がない(混乱を招く)わけだからして、
Stringの==は
lhs == rhsを
(lhs is null) ? (rhs is null) : lhs.equals(rhs)
にしてしまうのは、ナイスなんじゃないかなあ。
コメント欄で言及されているとおり、
サブクラスとのインスタンスとの比較は諦めても支障がない、
と考えてしまうので。
ちょっといびつな印象はあるかもしれませんんが、元々特別扱いなのだしねえ。
これでargiusさんのこんなメソッドがあれば良かったのに問題も解決。
こんなメソッドがあれば良かったのに、といつも思います。
public static boolean equals(String s1, String s2) { if (s1 == null || s2 == null) { return false; } return s1.equals(s2); }"string".equals(String)がキライ - argius note
ていうか、Javaって
String s = "hoge"; if (s == "hoge") { ... }
はtrueを返すのに、(immutableでインスタンスが同じだから)
String ss = "ho"; ss += "ge"; if (ss == "hoge") { ... }
はfalseなのかよ、って思いますよね……。