[英]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.