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;
}
これを回避する 1 つの方法は、単に @SuppressWarnings を使用することですが、ジェネリックを使用して同じことを修正できますか。
<> 演算子を使用するとこれは修正されますが、1.6 互換にする必要もあります。