我有一个要求,我想在哪里定义一个generic class
实现一个generic interface
.
这是我的自定义地图界面:
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);
}
}
但是当我尝试构建一个缓存时,我会收到类似“缓存是原始类型。对泛型缓存的引用应该参数化”之类的警告......
创建自定义地图的示例方法。
public ICache<?, ?> lookupCache(String cacheName) {
ICache<?, ?> cache = null;
Cache<?, ?> jCache = new DefaultCacheManager().getCache();
cache = new CustomCache(jCache);
return cache;
}
避免这种情况的一种方法是简单地使用@SuppressWarnings,但我可以使用泛型来修复它。
使用 <> 运算符虽然可以解决此问题,但我也需要使其与 1.6 兼容。