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 に答える