ジェネリック<? スーパーT>の実例は?
質問
私は、以下のことを理解しています。
<? super T>
の任意のスーパークラスを表します。
T
(の親クラス)。
T
の親クラス)。しかし、この一般的なバインド ワイルドカードの実際の例を想像するのは本当に大変です。
私は何を理解しているかというと
<? super T>
の意味を理解し、この方法を見たことがあります。
public class Collections {
public static <T> void copy(List<? super T> dest, List<? extends T> src) {
for (int i = 0; i < src.size(); i++)
dest.set(i, src.get(i));
}
}
の例を探しています。 実際の使用例 この構造が使用できる例を探しているのであって、それが何であるかの説明を求めているのではありません。
どのように解決するのですか?
一番簡単な例として、思いつくのは
public static <T extends Comparable<? super T>> void sort(List<T> list) {
list.sort(null);
}
から引用したもので、同じ
Collections
. このように
Dog
を実装することができます。
Comparable<Animal>
で、もし
Animal
はすでにそれを実装しています。
Dog
は何もする必要がありません。
EDITで実例を。
メールでのやりとりの後、私の職場の実例を紹介することが許されました(やったー!)。
というインターフェースを持っています。
Sink
(それが何をするかは重要ではありません)、そのアイデアは
が蓄積される
というものです。宣言はかなり些細なものです(簡略化されています)。
interface Sink<T> {
void accumulate(T t);
}
当然ながら、このメソッドには
List
を受け取り、その要素を
Sink
(に変換します(もう少し複雑ですが、簡単に説明します)。
public static <T> void drainToSink(List<T> collection, Sink<T> sink) {
collection.forEach(sink::accumulate);
}
これは簡単でしょう?まあ...
を持つことができますね。
List<String>
を持つことができますが、それを
Sink<Object>
- というのは、私たちにとってかなり一般的なことです。しかし、これでは失敗します。
Sink<Object> sink = null;
List<String> strings = List.of("abc");
drainToSink(strings, sink);
これを動作させるためには、宣言を次のように変更する必要があります。
public static <T> void drainToSink(List<T> collection, Sink<? super T> sink) {
....
}
関連
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Pythonで'super'は何をするのですか?- super().__init__() と明示的なスーパークラス __init__() の違い
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
-
[解決済み】PECS(Producer Extends Consumer Super)って何?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
javaの非静的メソッドを静的に参照することができない
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
無効なメソッド宣言
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
代入の左辺は変数でなければならない 解答
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
[解決済み] Javaにおける<? super T>と<? extends T>の違い [重複]について
-
[解決済み】PECS(Producer Extends Consumer Super)って何?)