我有一个缓存api,它使用数组作为缓存的存储。如何确保界面中的类型安全?我对 java 中的概念不太熟悉,所以如果您能包含详细的答案,我将不胜感激。
客户端接口
public class ClientCacheServiceImpl extensions InternalCacheServiceImpl {
public ClientCacheServiceImpl(int sets, int entries, String algorithm) {
super(sets, entries, algorithm);
}
内部接口
public class InternalCacheServiceImpl 实现了 InternalCacheService {
private final int numberOfSets;
private final int numberOfLines;
public final CacheElement[] cacheArray;
public final String algorithm;
public InternalCacheServiceImpl(int numberOfSets, int numberOfLines, String algorithm) {
}
public final Object get(Object key) {
}
公共接口 InternalCacheService {
public Object get(final Object key);
public void put(final Object key, final Object value);
public int size();
public void clear();
}
公共类 CacheElement {
public int tag;
public Object data;
public boolean isEmpty;
public long timestamp;
}
应引入泛型参数类型 T,如下所示:
public interface InternalCacheService<T> {
public T get(final T key);
public void put(final T key, final T value);
public int size();
public void clear();
}
为整数类型键实现类,值如下所示:
public class InternalCacheServiceImpl implements InternalCacheService<Integer> {
private final int numberOfSets;
private final int numberOfLines;
public final CacheElement[] cacheArray;
public final String algorithm;
public InternalCacheServiceImpl(int numberOfSets, int numberOfLines, String algorithm) {
}
public final Integer get(Object key) {
//find the cached element by key and return it. Lets say it is the ith element
return (Integer) cacheArray[i].data;
}
}