gpt4 book ai didi

java - 定义实现通用接口(interface)的通用类

转载 作者:行者123 更新时间:2023-11-30 07:17:47 24 4
gpt4 key购买 nike

我有一个要求,我想定义一个实现通用接口(interface)通用类

这是我的自定义 map 界面:

public interface ICache<K, T> {
boolean containsKey(K k);
T getValue (K key);
void remove(K key);
void put(K k, T t);
}

这是自定义类实现:

 public class CustomCache<K, T> implements ICache<K, T> {

private org.infinispan.Cache<K, T> cache;

public CustomCache(org.infinispan.Cache<K, T> cache) {
this.cache = cache;
}

@Override
public boolean containsKey(K k) {
return cache.containsKey(k);
}

@Override
public T getValue(K key) {
return cache.get(key);
}

@Override
public void remove(K key) {
cache.remove(key);
}

@Override
public void put(K k, T t) {
cache.put(k, t);
}
}

但是当我尝试构建缓存时,我收到类似“缓存是原始类型。对泛型缓存的引用应该被参数化”的警告......

创建自定义 map 的示例方法。

public ICache<?, ?> lookupCache(String cacheName) {
ICache<?, ?> cache = null;
Cache<?, ?> jCache = new DefaultCacheManager().getCache();
cache = new CustomCache(jCache);
return cache;
}

避免这种情况的一种方法是简单地使用@SuppressWarnings,但我可以使用泛型修复它吗。

虽然使用 <> 运算符可以解决此问题,但我也需要使其与 1.6 兼容。

最佳答案

我会把它实现为

public class Cache<K, T> implements ICache<K, T> {
Map<K, T> map = new HashMap<K, T>();

@Override
public boolean containsKey(K k) {
return map.containsKey(k);
}

@Override
public T getValue(K key) {
return map.get(key);
}

@Override
public void remove(K key) {
map.remove(key);
}

@Override
public void put(K k, T t) {
map.put(k, t);
}
}

它作为适配器模式

关于java - 定义实现通用接口(interface)的通用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15805043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com