J'ai un morceau de code qui ressemble à ce que j'ai collé ci-dessous:Générique Visibilité des classes internes?
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;
}
}
}
Dans ma classe « TheCache », je veux limiter le type générique à un particulier, ce qui est bien, mais quand je obtenir la 'valeur' en tant que conteneur, il n'est en quelque sorte pas typé, en ce sens que je ne peux pas exécuter la méthode doSomething. Pourquoi?
Dang, dès que j'ai posté nous l'avons compris. Si vous supprimez la définition générique de TheCache comme ceci: private class TheCache étend LinkedHashMap puis cela fonctionne. –
Kylar