[解決済み] super E>と<extends E>の違いは何ですか?
質問
とはどのような違いがあるのでしょうか?
<? super E>
と
<? extends E>
?
例えば、クラス
java.util.concurrent.LinkedBlockingQueue
コンストラクタに次のようなシグネチャがあります。
public LinkedBlockingQueue(Collection<? extends E> c)
とメソッドに1つずつ。
public int drainTo(Collection<? super E> c)
解決方法は?
最初の(
<? super E>
) は、それが "E"の祖先 (スーパークラス) であるいくつかの型であることを述べています;2番目の (
<? extends E>
は、E"のサブクラスであるいくつかの型であることを示しています。(どちらの場合もE自体は問題ありません)。
そのため、コンストラクタでは
? extends E
フォームを使用することで
フェッチ
の値は、すべて E またはそのサブクラスです (つまり、互換性があります)。そのため
drainTo
メソッドは値を
を
の要素タイプを持っている必要があります。
E
またはスーパークラス
.
例として、このようなクラス階層があるとします。
Parent extends Object
Child extends Parent
と
LinkedBlockingQueue<Parent>
. を渡すと、このように構成できます。
List<Child>
これは、すべての要素を安全にコピーします。
Child
は親です。を渡すことはできませんでした。
List<Object>
とは互換性のない要素もあるため
Parent
.
同様に、そのキューを
List<Object>
なぜなら、すべての
Parent
は
Object
...しかし、あなたはそれを
List<Child>
なぜなら
List<Child>
との互換性があることを期待します。
Child
.
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
Javaエラーメッセージがenclosingクラスでない
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] JDKとJREの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
Methodのinvokeメソッド実装のJavaリフレクション
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
Javaエラーメッセージがenclosingクラスでない
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
HttpClientがGZIP形式でない場合の対処法
-
テストが見つかりませんでした
-
[解決済み】PECS(Producer Extends Consumer Super)って何?)
-
[解決済み】JavaでClass<T>を使用するには?