1

我有一个参考:

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>

我在搞砸什么吗?还是不可修改的视图不喜欢函数类型?

4

1 回答 1

5

不,你的问题是,而不是

public final static LinkedHashMap<String, Function<OrderBean, String>> DELEGATES;

你应该有

public final static Map<String, Function<OrderBean, String>> DELEGATES;

...因为unmodifiableMap返回一个裸Map实现。(不过,支持数据结构仍将是LinkedHashMap。)

于 2015-05-27T16:22:07.447 回答