[解決済み] [Solved] Difference between List, List<?>, List<T>, List<E>, and List<Object>
Question
What are the differences between
List
,
List<?>
,
List<T>
,
List<E>
, and
List<Object>
?
1. List
List
: is a raw type, therefore not
typesafe
. It will only generate a runtime error when the casting is bad. We want a compile time error when the cast is bad. Not recommended to use.
2. List<?>
List<?>
は、束縛されないワイルドカードです。でも、何のために使うのかよくわからない?をプリントすることはできるのですが
List<?>
を問題なく実行できます。
public static void test(List<?> list){
System.out.println(list); // Works
}
に項目を追加できないのはなぜですか?
List<?>
?
public static void test(List<?> list){
list.add(new Long(2)); // Error
list.add("2"); // Error
System.out.println(list);
}
3. リスト<T>
public static void test(List<T> list){ // T cannot be resolved
System.out.println(list);
}
この構文が理解できない。私はこのようなものを見て、それが動作します。
public <T> T[] toArray(T[] a){
return a;
}
時々、私は
<T>
または
<E>
または
<U>
,
<T,E>
. これらはすべて同じものなのでしょうか、それとも異なるものを表しているのでしょうか?
4. リスト<オブジェクト>
これは、エラー "メソッドを提供します。
test(List<Object>)
は、引数
List<String>
となります。
public static void test(List<Object> list){
System.out.println(list);
}
もしこれを試すと、"Cannot cast from
List<String>
から
List<Object>
となります。
test((List<Object>) names);
混乱しています。
String
のサブクラスです。
Object
であるならば、なぜ
List<String>
のサブクラスです。
List<Object>
?
解決方法は?
1) 正解
2) これは、アイテムの型を気にしない、読み取り専用のリストと考えることができます。
3) T, E, U は同じですが、例えば、T はタイプ、E は要素、V は値、K はキーとして使われることが多いようです。コンパイルするメソッドは、ある型の配列を受け取り、同じ型の配列を返すと言うものです。
4) オレンジとリンゴを混ぜることはできない。オブジェクトのリストを期待するメソッドに文字列リストを渡すことができれば、文字列リストにオブジェクトを追加することができます。(そして、すべてのオブジェクトが文字列であるわけではありません)。
関連
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
IllegalArgumentException この例外を解決する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
プロジェクトの依存関係を解決できなかった 解決
-
JQuery DataTable 详解
-
Methodのinvokeメソッド実装のJavaリフレクション
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
javaでクラスを作成すると、enclosing classでないように見える
-
java 例外。Javaツールの初期化
-
IDEA パッケージステートメントの欠落
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決