これを行うと、java.lang.Stringクラスとjava.lang.Stringに依存するすべてのクラスとの互換性がなくなります。これは非常にまれなことです。
もう1つ問題がライセンスになる可能性があります。自己学習のためには完全に問題ありませんが、あなたのコードを(コンパイルされた、またはソースで)公開する場合は、前にライセンス条項を注意深く読みます。
Stringクラスはfinal宣言されているので、Stringから継承することもできず、一見すると便利なようなPacerierStringを実装することはできません。しかし、小さなヘルパーを実装した人が非常に多く、どこからでも多くのSpecialStringクラスを取得できます。
一般的な方法は、Fooクラスを書いて、そのUniversalToolStringに方法
public Foo toFoo() {
// some conversion for String representation of Foo
}
を追加し、人々だろう。
ただし、文字列を含むWrapperを記述することはできます。 Wrapperをメソッドに渡すことはできません。メソッドにはStringが必要ですが、そのような場合には 'toString()'メソッドを呼び出す必要があります。
Foo foo = new Foo ("foobar", 42);
foo.setMagic (foo.toString().length);
既存のクラスを再生するのではなく、独自の実装(ユーティリティクラス)を作成するのは良い方法ではありませんか? –
既存のクラスにメソッドを追加することで何をしようとしていますか?あなたがしようとしていることは、確かに良い解決策があります。 – casablanca
@casablancaたとえば、クラスのプライベートフィールド( 'java.lang.String.value')にアクセスしたいと思っています。 – Pacerier