あまりよくないObjectのidentityの使い方
明らかに不穏です。
// finalを付けないと更に不穏なコードにできます。 private static final String SPECIAL_TOKEN = new String(""); public static void methodXXX(final String arg){ if(arg == SPECIAL_TOKEN){ // なんか特別な処理 } // 普通の処理 }
オブジェクトのアイデンティティを使って引数を追加することなく、特殊な処理を行わせることが出来ますが、明らかに不穏なコードです。
こういう不穏なメソッドは、クライアントAPIからString#internメソッドを使って攻撃を仕掛けることが出来ます。SPECIAL_TOKENと同じ文字列を#internすればOK。 ⇒ 普通に頭ボケてた。外部からの攻撃は不可能です。