interface S {}
interface SS extends S {}
abstract class A<T extends S> {
T get() {…}
}
abstract class B<BT extends SS> extends A<BT> {}
Почему ((B)someInstanceOfB).get()
возвращает объект типа S
(и мы должны привести его к SS
вручную), когда компилятор может определить, что возвращаемый объект по крайней мере относится к типу SS
?
Почему компилятор не делает неявный класс, чтобы иметь более четкий код? Код имеет версию 1.5+, и это не секрет для компилятора. (Раскрыты)
Update: Почему не компилятор компилировать B
класс, как он неявно имеет метод BT get() { return super.get(); }
?
Является ли эта проблема решена в Java 1.7+?
Непонятный вопрос. Но здесь 'S' и' SS' являются интерфейсами. – midhunhk
@silverback пересмотренный вопрос. В чем проблема с интерфейсами? –