两种方法具有相同的擦除,但都不会覆盖另一种方法-即使遵循相同的通用定义

时间:2019-10-06 10:42:01

标签: java caching concurrency

我正在尝试扩展ConcurrentHashMap(仅用于FUN)并注意到以下编译错误说明...

  

这两种方法具有相同的擦除方式,但是都不能覆盖另一种方法

public class SimpleCacheImpl2<K, V> extends ConcurrentHashMap<K,SoftReference<V>> {

public void put(K key, V data){ // Compilation error at this line 
    SoftReference<V> softData = new SoftReference<V>(data);
    super.put(key, softData);
}

public V get(K key){ // Compilation error at this line
    SoftReference<V> softData =  super.get(key);
    return softData == null ? null : softData.get() ;
}

}

我的意图是对数据使用SoftReference。对创建简单缓存有任何建议吗?

编辑1:

在收到Boris&Pshemo的建议后,我将继续执行以下实现来调整和介绍我的功能。仅显示基本功能,并将类似地扩展更多自定义功能。

public class SimpleCacheImpl2<K, V> extends ConcurrentHashMap<K,SoftReference<V>> {

@Override
public SoftReference<V> put(K key, SoftReference<V> data){
    return super.put(key, data);
}

@Override
public SoftReference<V> get(Object key){ 
    return super.get(key);
}

public V putItem(K key, V data){
    SoftReference<V> softData = put(key,new SoftReference<>(data));
    return softData.get();
}

public V getItem(K key){
    SoftReference<V> softData = get(key);
    return softData != null ? softData.get() : null;
}

}

0 个答案:

没有答案