When I do this, the compiler will complain.
private Map<String, T> map = new LinkedHashMap<>(16, (float) 0.75, true) {
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > capacity;
}
};
But when I do these, the compiler will accept it.
private Map<String, T> map = new LinkedHashMap(16, (float) 0.75, true) {
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > capacity;
}
};
Or
private Map<String, T> map = new LinkedHashMap<String, T>(16, (float) 0.75, true) {
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > capacity;
}
};
The entire code:
public class LRUCache<T> {
private int capacity;
private Map<String, T> map = new LinkedHashMap<String, T>(16, (float) 0.75, true) {
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > capacity;
}
};
}
I know it may be something related to erasure. But I'm confusing about the details.