Jetez un oeil à ce (sans doute stupide) Code:Que fait le compilateur Java avec plusieurs bornes génériques?
public <T extends Appendable & Closeable> void doStuff(T object)
throws IOException{
object.append("hey there");
object.close();
}
Je sais que le compilateur supprime les informations génériques, donc je suis intéressé par le code Java 1.4 équivalent à ce que le compilateur (je suis assez sûr le compilateur ne réorganise pas le code source, donc je demande une version équivalente source Java que les gens naïfs comme moi peut comprendre)
est-ce quelque chose comme ceci:
public void doStuff(Object object)
throws IOException{
((Appendable)object).append("hey there");
((Closeable)object).close();
}
Ou plutôt comme ceci:
public void doStuff(Object object)
throws IOException{
Appendable appendable = (Appendable) object;
Closeable closeable = (Closeable) object;
appendable.append("hey there");
closeable.close();
}
Ou encore comme ceci:
public void doStuff(Appendable appendable)
throws IOException{
Closeable closeable = (Closeable) appendable;
appendable.append("hey there");
closeable.close();
}
Ou encore une autre version?
pourquoi ne pas décompiler le code avec javap pour savoir. Je soupçonne que ceci n'est pas défini et que les différents compilateurs pourraient le gérer différemment. –
Je pourrais le faire, mais j'espérais de vraies réponses de gens intelligents qui m'expliqueraient pourquoi les choses sont ce qu'elles sont. –