0

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.

梁嘉腾
  • 11
  • 2

0 Answers0