Tener un vistazo a esto (posiblemente estúpida) Código:¿Qué hace el compilador de Java con múltiples límites genéricos?
public <T extends Appendable & Closeable> void doStuff(T object)
throws IOException{
object.append("hey there");
object.close();
}
Sé que el compilador elimina la información genérica, así que estoy interesado en Java 1.4 código equivalente a lo que hace el compilador (estoy bastante seguro el compilador no reorganizar el código fuente, por lo que estoy pidiendo una versión de código Java equivalente que los ingenuos como yo puede entender)
IS es algo como esto:
public void doStuff(Object object)
throws IOException{
((Appendable)object).append("hey there");
((Closeable)object).close();
}
O más bien como esto:
public void doStuff(Object object)
throws IOException{
Appendable appendable = (Appendable) object;
Closeable closeable = (Closeable) object;
appendable.append("hey there");
closeable.close();
}
ni aun como este:
public void doStuff(Appendable appendable)
throws IOException{
Closeable closeable = (Closeable) appendable;
appendable.append("hey there");
closeable.close();
}
O otra versión?
¿por qué no descompilar el código con javap de averiguarlo. Sospecho que esto no está definido y los diferentes compiladores podrían manejarlo de manera diferente. –
Podría hacer eso, pero esperaba respuestas reales de personas inteligentes que me explicaran por qué las cosas son lo que son. –