javaジェネリックでタイプパラメータを強制的に実装してequals
メソッドを実装する方法はありますか? たとえば、public class Bag<Item> implements Iterable<Item>
のcontains
メソッドを持つこのクラスはItem.equals
メソッドを使用して作成しました。だから私はジェネリックスの渡されたオブジェクトもequals
メソッドを実装することを確認したいと思います。javaジェネリックスで特定のメソッドを実装するための型パラメータを強制的に
答えて
ItemBase
という名前の抽象基本クラスを作成し、abstractをequalsにしてからItem extend ItemBase
とすることができます。
public abstract class ItemBase {
@Override
public abstract boolean equals(Object o);
}
public class Bag extends ItemBase
これは、特に実装するItemBaseを実装誰を強制するには、あなたが**インターフェイス**クラスを作成し、typeパラメータとしてそれを渡したいでしょう
Javaがこれを許可する理由を知りたいですか?私にとって、それはポリモーフィズムのかなりの違反であり、最小の驚きの原則に違反しています(どうしてそれはインターフェイスとどう違うのですか?) –
私自身の質問に答えるために、JLSによって明示的に許可されています抽象メソッドでオーバーライドすることができます。」*)、いくつかの例があります:http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#d5e10777。私はまだ値を疑問に思う。 –
今日は何かを学びました。 – allprog
- 1. 強制的に特定の型定義された型を強制する
- 2. 強制派生クラスで特定のメソッドを実装する
- 3. Visual Basic:特定のメソッドを実装するフォームを強制的に
- 4. Java、パラメータを知らないメソッドの強制実装
- 5. 特定のノードでOozieジョブを強制的に実行する
- 6. サブクラスにメソッドの実装を強制する方法
- 7. インターフェイスの型メソッドのパラメータの実装
- 8. 動的型定義の特定の形式を明示的に実装する
- 9. 特定の型を受け入れるメソッドを実装するためにサブクラスを適用する方法
- 10. 特定のサーバーに接続するためのPrincipalContextの強制
- 11. Javaジェネリックスのパラメータを渡す
- 12. 特定のクラスのインターフェイスでJavaジェネリック型パラメータを制限する方法
- 13. SignalR特定のグループに属するアプリケーションを強制的に実行する
- 14. 特定のサブドメインを除くWordPressサイトのhttpsを強制的に実行する
- 15. 特定の仮想メソッドのためにパラメータを追加する
- 16. 型パラメータを型にすることを強制する
- 17. Goタイプに強制的にインターフェースを実装する
- 18. Java - ジェネリックスとワイルドカードとインターフェイスの実装
- 19. すべての派生クラスに強制的に抽象メソッドまたはプロパティを実装できますか?
- 20. テストを実行するためにsbt 0.11を強制的に実行する
- 21. 強制的にプライベートメソッドを実装するクラス
- 22. Serilogで特定のパラメータを使用して強制する(または一般的には外部関数で)
- 23. 特定のコミットからブランチを強制的にマージする
- 24. PHPが特定の数値を強制的に使用する
- 25. TFSビルドでナゲットをパックするときに特定のバージョンのパラメータを強制的に適用する
- 26. インターフェイスの実装クラスの型パラメータを設定するには?
- 27. 強制的にアプリを強制終了するためのdispatch_resumeとdispatch_suspend
- 28. サブクラスに強制的に静的解析メソッドを実装させることはできますか?
- 29. Hibernateメッセージ補間を実装するときのJavaジェネリックスのエラー
- 30. Scalaのジェネリックス:インターフェイス/特性を2回実装する?
に等しいです。 –
すべてのオブジェクトはすでに 'equals()'を実装しています。 – kiheru
渡されたオブジェクトは強制的に 'equals'を上書きしなければならないということを意味すると思いますが、これは...うーん、奇妙です。 – GGrec