簡體   English   中英

在 Java generics 中指定 Map

[英]Specify Map in Java generics

我有以下界面:

public interface IGenericCache<K, V> {

    void put(K key, V value);

    V get(K key);

}

然后我想創建一個具體的 class ,它將CacheKey object 作為輸入和Map<String, List<String>> object 作為 Z78E62621F6393D4CE133 一個概念性的例子如下:

public class LocalCache<CacheKey, Map<String, List<String>>> implements IGenericCache<CacheKey, Map<String, List<String>>> {

    @Override
    public void put(CacheKey key, Map<String, List<String>> value) {
        // TODO
    }

    @Override
    public Map<String, List<String>> get(CacheKey key) {
        return null;
    }
}

CacheKey是這樣的:

@Data // lombok annotation
public class CacheKey {
    private final String attr1;
    private final String attr2;
}

通過使用上面示例中的實現,我看到了 IDE 的紅色波浪線。 但是我找不到正確的格式來匹配界面中的 generics <K, V>

任何擅長 Java 的人都可以糾正我嗎? 先感謝您!

通過將<>放在您定義的 class 的名稱之后,您將聲明令牌用作 generics。 但是您不希望這樣,您只想填充現有的泛型類型 arguments。

所以只需省略第一對<>

public class LocalCache implements IGenericCache<CacheKey, Map<String, List<String>>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM