私は現在プロジェクトに取り組んでおり、次のような数行のコードに出くわしました:
List<Map<Sring, ? super Serializable>> list = new ArrayList<Map<String, ? super Serializable>>();
この構文は私にとってまったく新しいものであり、通常の置換?
以外の条件演算子で検索結果を見つけるのに苦労しています。if/else
私は現在プロジェクトに取り組んでおり、次のような数行のコードに出くわしました:
List<Map<Sring, ? super Serializable>> list = new ArrayList<Map<String, ? super Serializable>>();
この構文は私にとってまったく新しいものであり、通常の置換?
以外の条件演算子で検索結果を見つけるのに苦労しています。if/else
この構文? super Serializable
は、Serializable オブジェクトへの参照を保持できる任意の型を意味します。この特定のケースでは、これは または のいずれMap<String,Serializable>
かを意味しますMap<String,Object>
。
多くの場合、この表記法はデータの受信者に使用され、頭字語PECS : 「生産者拡張、消費者スーパー」に従います。
? super Serializable
任意の型、>= Serializable
つまりキャプチャできる任意Serializable
の型とそのスーパータイプを意味します。これは、ジェネリック要素の下限クラスを示します。
あなたの場合、それは Map とorString
を実装する任意のクラスになります。Serializable
Object