1

我目前正在做一个项目,遇到了几行这样的代码:

List<Map<Sring, ? super Serializable>> list = new ArrayList<Map<String, ? super Serializable>>();

?这种语法对我来说是全新的,除了典型的if/else替换之外,我很难在条件运算符上找到任何搜索结果。

4

3 回答 3

3

语法? super Serializable意味着可以保存对 Serializable 对象的引用的任何类型。在这种特殊情况下,这意味着要么Map<String,Serializable>要么Map<String,Object>

这种表示法经常用于数据的接收者,在首字母缩写词PECS之后:“生产者扩展,消费者超级”。

于 2013-04-30T16:05:42.460 回答
1

? super Serializable表示任何类型>= Serializable,即可以捕获的任何类型Serializable及其任何超类型。它指示通用元素的下界类。

在您的情况下,它将是 MapString和任何实现Serializableor的类Object

于 2013-04-30T15:55:00.013 回答
1

据我所知,在这种情况下?将意味着“任何东西”。所以基本上它是一个映射列表,每个映射都将一个字符串映射到任何以 Serializable 作为其基类的对象。(如果我错了,请纠正我)。

于 2013-04-30T15:56:22.293 回答