[解決済み] ゲットプットの原則の説明
質問
オライリーの本を読み、その中でこのようなことを知りました。 取得の原則 .
- を使用します。
extends
のみを使用する場合は、ワイルドカードを使用します。 を取得します。 の値のみを取得する場合、ワイルドカードを使用します。- を使う。
super
のみを使用する場合は、ワイルドカードを使用します。 を置く の値だけを構造体に入れることができます。- また、構造体から取得するときと構造体に入れるときの両方でワイルドカードを使わないでください。
例外 があります。
で宣言された型には何も入れられません。
extends
という値を除いて、ワイルドカードnull
という値を除いて、ワイルドカードを使うことができます。で宣言された型からは何も得ることができません。
super
型の値を除いて、ワイルドカードObject
の値を除き、ワイルドカードが使用されます。
このルールを深く掘り下げるために、どなたか助けていただけないでしょうか?可能であれば、それらを階層的に配置してください。
どのように解決するのですか?
バナナの束を考えてみましょう。これは
Collection<? extends Fruit>
であり、特定の種類の果物の集まりです。しかし、あなたは(その宣言から)それがどの種類の果物の集まりなのか知りません。あなたは
得る
を得ることができ、それが間違いなく果物であることを知ることができます。
加える
バナナの束にリンゴを加えようとするかもしれませんが、それは絶対に間違っています。あなたは
は
加える
null
の有効な値になるので、これに
の有効な値になるからです。
の有効な値になるからです。
次にフルーツボウルを考えてみましょう。これは
Collection<? super Banana>
のように、ある種の "greater than" のコレクションであるという点で。
Banana
(例えば
Collection<Fruit>
または
Collection<TropicalFruit>
). あなたは
間違いなく
にバナナを加えることができます。しかし、ボウルからアイテムを取ってくると、何が出てくるかわからないのです。
ではない
はバナナではないかもしれません。あなたが確実に知っていることは、それが有効な(もしかしたら
null
)
Object
を参照してください。
(一般に、Java ジェネリックスの質問では Java ジェネリクス FAQ は、あなたが投げかけそうなジェネリクス関連のほとんどすべての答えを含む、優れたリソースです)。
関連
-
アクセス制限の解決方法: ---- in Java
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。
-
[解決済み] Mapを実装し、挿入順序を保持するJavaクラス?
-
[解決済み] C#で演算子==はジェネリック型に適用できない?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
型に解決できない エラー解決
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Java基礎編 - オブジェクト指向
-
Java:未解決コンパイル問題の解決方法
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題