Die*_*oia 1 java collections function unmodifiable
我有一个参考:
public final static LinkedHashMap<String, Function<OrderBean, String>> DELEGATES;
Run Code Online (Sandbox Code Playgroud)
我初始化像这样:
static {
LinkedHashMap<String, Function<OrderBean, String>> tmp = new LinkedHashMap<>();
tmp.put(OrderCols.FIELD1, OrderBean::getFIELD1);
tmp.put(OrderCols.FIELD2, OrderBean::getFIELD2);
...
DELEGATES = Collections.unmodifiableMap(tmp);
}
Run Code Online (Sandbox Code Playgroud)
在静态块的最后一行(对DELEGATES的赋值),我收到此编译器错误:
错误:(64、48)Java:不兼容的类型:不存在类型变量为K,V的实例,因此java.util.Map符合java.util.LinkedHashMap>
我搞砸了吗?还是不可修改的视图不喜欢函数类型?
不,您的问题是
public final static LinkedHashMap<String, Function<OrderBean, String>> DELEGATES;
Run Code Online (Sandbox Code Playgroud)
你应该有
public final static Map<String, Function<OrderBean, String>> DELEGATES;
Run Code Online (Sandbox Code Playgroud)
...因为unmodifiableMap返回一个简单的Map实现。(尽管,后备数据结构仍为LinkedHashMap)。
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |