package lobstack; import java.util.LinkedHashMap; import java.util.Map; public class AutoCloseLRUCache<K,V extends AutoCloseable> extends LinkedHashMap<K,V> { private static final long serialVersionUID=9L; private int MAX_CAP; public AutoCloseLRUCache(int cap) { super(cap+1, 2.000f, true); MAX_CAP=cap; } protected boolean removeEldestEntry(Map.Entry<K,V> eldest) { boolean close = (size() > MAX_CAP); if (close) { try { eldest.getValue().close(); } catch(Exception e) { throw new RuntimeException(e); } return true; } return false; } }