それはかなり単純なものです。オブジェクトのリストを宣言したいのですが、すべてのオブジェクトが Comparable インターフェイスを実装していることを確認したいです。私は何をすべきか?書いてみます
List<Comparable> heap = new ArrayList<Comparable>();
しかし、コンパイラは私に警告を出します。正しい書き方とは?
ありがとう
フォローアップ: 質問を投稿する前に質問を完了したと思っていましたが、そうではなかったようです。では、仕上げさせてください。
私の目的は、次のようなオブジェクトのリストを作成することです。1. Comparable インターフェイスを実装します。2. すべて同じ型です。
私はそれを作ることができます
List<Comparable<?>> heap = new ArrayList<Comparable<?>>()
いいえ、できません。その理由は、リストから要素を取得して比較する必要があるためです。お気に入り:
if( heap.get(0).compareTo(heap.get(1)) > 0)
ワイルドカード List> を使用すると、コンパイラでエラーが発生します。heap.get(0) は heap.get(1) と一致しないと言うので、それを宣言する正しい方法を知る必要があります。
私は誰かが私に警告が何であるかを尋ねているのを見つけました....それは私を驚かせます....まあ、警告は次のとおりです: Comparable は生の型です。ジェネリック型 Comparable への参照はパラメーター化する必要があります