Посмотрите на этот (возможно, глупый) код:
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();
}
Или еще одна версия?