java - List<?>, List, List<Object>, List<? extends Object>各有什么区别?
巴扎黑
巴扎黑 2017-04-17 17:42:19
0
4
650

List<?>, List, List<Object>, List<? extends Object>各有什么区别?

巴扎黑
巴扎黑

全員に返信(4)
Ty80

まず、List<?> は、任意の型を表すのではなく、特定の型を表すということがわかりません。プログラミング時のこの特定の型は何ですか。List は、ジェネリック パラメーターを持たないリストを表します。List<Object> が格納されることを意味します。これはオブジェクトです。最後に、List< extends Object> は、オブジェクトのサブクラスだけではなく、オブジェクトの特定のサブクラスの 1 つを格納します。

最後に言いたいのは、<?> は実際には <? extends Object> に似ているということです。この類似性は、警告を生成せずに相互に一致できるという点に反映されています。 🎜> リーリー

ただし、これらの違いはコンパイル時にコンパイラによって生成されるだけで、実行時には消去されるため、それらはすべて List<Object>

私の個人的な理解です

いいねを押す +0
大家讲道理

List<?> および List: List を単独で使用すると、Eclipse で警告が表示されます。

: Object 型のオブジェクトをコレクションに格納することについてです。Java の継承と上向き変換のメカニズムを理解します。このコレクションが実際に任意の型のオブジェクトを格納できることを理解するのは難しくありません。 List<Object>

>: コレクションに保存されるオブジェクトは Object クラス

のサブクラス オブジェクトである必要があることを意味します。 List<? extends Object詳細については、「Java Core Technology (Vol.1)」のジェネリックスに関する部分を参照してください...

いいねを押す +0
小葫芦

リストはコレクションの一種です。
<> はジェネリック型を表します
List<Object> はこのコレクションに配置できるオブジェクトを表しますオブジェクト クラスから継承する任意の型のオブジェクトをこのコレクションに配置できます

コレクション フレームワークの小さなジェスチャーについて詳しく知りたい場合は、コレクション フレームワークに関する章がある私が書いたコラムを読むことができます

いいねを押す +0
大家讲道理

**List<?>、List<Object>、List<? extends Object> 違いは次のとおりです。
1. JDK のジェネリックスは型チェック用であることを理解します。コレクション内のオブジェクトについては、コンパイル時に <> 内の型を制限することで、オンライン実行時に例外をスローするのではなく、コンパイル中にエラーを可能な限りチェックできます。
2. List をこのように書くと、Eclipse ではその下に黄色の線が表示され、警告が表示されます。また、それは不規則な方法で書かれていますが、残りは標準的な方法で書かれています。
3.List<?> は任意の型を置くことができます; List<Object> は Object 型のみを置くことができますが、Object はすべてのクラスの親クラスであるため、(Object) を追加することで他のクラスを強制的に型変換できます。 Front 、 List<? extends Object> も同様で、任意のクラスまたは Object クラス自体を置くことができます。
お役に立てば幸いです~~**

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート