我目前正在做一个项目,遇到了几行这样的代码:
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
及其任何超类型。它指示通用元素的下界类。
在您的情况下,它将是 MapString
和任何实现Serializable
or的类Object
。
据我所知,在这种情况下?将意味着“任何东西”。所以基本上它是一个映射列表,每个映射都将一个字符串映射到任何以 Serializable 作为其基类的对象。(如果我错了,请纠正我)。