-3

... extends LinkedList<T>従来のポリモーフィズムを使用する代わりに、Java で String、List、またはカスタム MyClass クラスなどのクラスをオーバーロードする方法はありますか? .

theList.doRandomShuffle(123); or theList.persistOnFile("fileName");

これを実現するために C コードを混在させることは、可能であれば検討中です。さらなる提案は役に立ちます。

更新:わかりました。String クラスは良い例ではありませんでした。MyList extends LinkedList<T>目的は、新しいリストを宣言したり、必要な関数のユーティリティ クラスを作成したりせずに、クラスを拡張することでした。私は達成する拡張の 2 つの可能性を排除し、それがハードコアであっても、さらにオプションがあるかどうかを尋ねています。

これ以上の理由は、LinkedList impl の新しい拡張クラスに適応せずに、特に jar ライブラリのクラスを拡張できるかどうかを疑問視することです。何でも。誰も確かなことを知らないコミュニティに本当にがっかりしており、質問さえ箱から出すべきだと考えています

4

4 に答える 4

1

Java では、String などの定義済みのクラスにメソッドを追加することはできません。ただし、クラスが でない場合はfinal、それを拡張してカスタム メソッドを作成できます。

(技術的には、定義済みのクラスにメソッドを追加できますが、これは面倒であり、Java の使用条件に違反することになります。)

于 2012-10-11T03:16:56.580 に答える
0

クラスは final であるため、String の動作をオーバーライドすることはできません。もちろん、これはカスタム クラスで行うことができます。あなたがやろうとしていることをより具体的に言えますか?

あなたの例のステートメントのいずれかを作成する方法はありません

String.doFunyStuff(123); "doFunny".onMe(1);

Javaで合法。

于 2012-10-11T03:14:13.283 に答える
0

クラス String は最終クラスです。これを拡張することはできません。

于 2012-10-11T03:14:34.377 に答える
0

いいえ、Java はC#の拡張メソッドのようなものをサポートしていません。あなたができる最善の方法はString、引数として を受け取り、それを操作して、おそらく を返す静的メソッドを定義することですStringString不変のクラスであるため、構文を除いて、達成しようとしているものとの違いはないはずです。

于 2012-10-11T03:15:12.720 に答える