私は今日、文字列とフォーマットをいじっていましたが、APIがおかしいことに気づきました。
通常、文字列をフォーマットするときは、
String.format("mystr %s", 1);
または同様のもの。
現在、この静的メソッドは、このクラスのインスタンス化されたオブジェクトにもアクセスできます。以下のコードは、String.format
静的に使用format
し、オブジェクトから直接メソッドを使用した結果を示しています。
@Test
public void test() {
assertEquals("abc 123", String.format("abc %s", 123));
assertEquals("abc 123", "abc".format("abc %s", 123));
assertEquals("def 123", "abc".format("def %s", 123));
}
最後のassertEquals()は、基本的に、フォーマットの署名を確認することを期待している最初の「abc」文字列を上書きします。
インスタンス化されたオブジェクトから静的メソッドを使用するというファンキーな使用法が欠けていますか?または、静的String.format()もStringのインスタンス化されたオブジェクトにアクセスできるため、表示されているだけですか?言い換えれば、APIの奇妙さ/バグです。