은 내가 아래에 붙여 넣은 것 같은 형태의 코드 조각이 내 'TheCache'클래스에서내부 클래스의 일반적인 가시성?
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;
}
}
}
를, 내가하면 괜찮 특정의 일반적인 유형을 제한 싶지만 '값'을 컨테이너로 가져 오면 doSomething 메소드를 실행할 수 없다는 점에서 어떻게 든 입력되지 않습니다. 왜? 그냥 클래스 선언에 <String, Container>
비트를 제거
내가 그것을 게시하자마자 우리는 그것을 알아 냈다. TheCache에서 일반 정의를 다음과 같이 제거하면 개인 클래스 TheCache가 LinkedHashMap를 확장하고 이 작동합니다. –
Kylar