[解決済み】PECS(Producer Extends Consumer Super)って何?)
質問
PECS(の略)に出会いました。
プロデューサー
extends
と消費者
super
) を読みながら、ジェネリックについて勉強しました。
の混乱を解決するために、PECSをどのように使用すればよいか、どなたか説明していただけませんか?
extends
と
super
?
解決方法は?
tl;dr:
"PECS"はコレクションから見たものです。もし、あなたが
のみ
一般的なコレクションからアイテムを引っ張ってくる場合、それはプロデューサーであり、そのために
extends
もし、あなたが
のみ
アイテムを詰め込んでいる場合は、コンシューマであるため
super
. もし、同じコレクションで両方を行う場合は
extends
または
super
.
物事のコレクションをパラメータとして受け取るメソッドがあるとします。
Collection<Thing>
.
ケース 1: コレクションを調べて、各項目に対して処理を行いたい場合。
そうすると、リストは
プロデューサー
を使用する必要があります。
Collection<? extends Thing>
.
という推論があります。
Collection<? extends Thing>
の任意のサブタイプを保持することができます。
Thing
として動作し、各要素は
Thing
を実行したときです。(実際には、何も(NULLを除いて)追加することはできません。
Collection<? extends Thing>
というのは、実行時にどの
特定の
のサブタイプは
Thing
は、コレクションが保持する)
ケース2:コレクションに物を追加したい。
そうすると、リストは
消費者
を使用する必要があります。
Collection<? super Thing>
.
この理由は
Collection<? extends Thing>
,
Collection<? super Thing>
を常に保持することができます。
Thing
実際のパラメータ化された型が何であってもです。ここでは、リストの中に何があっても、それが
Thing
を追加することで、このような
? super Thing
を保証します。
関連
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] Maven: assembly-pluginが全く実行されない
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Javaにおける "implements Runnable "と "extends Thread "の違いについて
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] init-paramとcontext-param
-
[解決済み] Javaにおける<? super T>と<? extends T>の違い [重複]について