我有一个参考:
public final static LinkedHashMap<String, Function<OrderBean, String>> DELEGATES;
我初始化如下:
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);
}
在静态块的最后一行(分配给DELEGATES),我得到了这个编译错误:
错误:(64,48)java:不兼容类型:没有变量类型的实例K,V存在,以便java.util.Map符合java.util.LinkedHashMap&gt;
我搞砸了什么?或者不可修改的观点不像函数类型?
答案 0 :(得分:4)
不,你的问题不是
public final static LinkedHashMap<String, Function<OrderBean, String>> DELEGATES;
你应该
public final static Map<String, Function<OrderBean, String>> DELEGATES;
...因为unmodifiableMap
返回了一个裸Map
实现。 (但是,后备数据结构仍然是LinkedHashMap
。)