Взгляните на этот (возможно, глупый) код:
public <T extends Appendable & Closeable> void doStuff(T object)
throws IOException{
object.append("hey there");
object.close();
}
Я знаю, что компилятор удаляет общую информацию, поэтому меня интересует код Java 1.4, эквивалентный тому, что делает компилятор (я почти уверен, что компилятор не изменяет исходный код, поэтому я прошу эквивалентную версию исходного кода Java, которую могут понять наивные люди вроде меня)
Это примерно так:
public void doStuff(Object object)
throws IOException{
((Appendable)object).append("hey there");
((Closeable)object).close();
}
Или, скорее, так:
public void doStuff(Object object)
throws IOException{
Appendable appendable = (Appendable) object;
Closeable closeable = (Closeable) object;
appendable.append("hey there");
closeable.close();
}
Или даже так:
public void doStuff(Appendable appendable)
throws IOException{
Closeable closeable = (Closeable) appendable;
appendable.append("hey there");
closeable.close();
}
Или еще одна версия?