У меня есть фрагмент кода, который выглядит примерно так, как я вставил ниже:
import java.util.LinkedHashMap;
import java.util.Map;
public class GenericMagic {
GenericMagic() {
}
private class Container {
int doSomething(){ return 42;}
@Override
public String toString() {
return "Container"+doSomething();
}
}
private class TheCache<String, Container> extends LinkedHashMap<String, Container> {
@Override
protected boolean removeEldestEntry(Map.Entry<String, Container> eldest) {
Container value = eldest.getValue();
value.doSomething();//if I comment this out it compiles
System.out.println(value);
return false;
}
}
}
В моем классе 'TheCache' я хочу ограничить универсальный тип конкретным, и это нормально, но когда я получаю 'value' в качестве контейнера, он как-то не печатается, так как я не могу выполнить doSomething метод. Почему?