Допустим, у меня есть следующая настройка
class A {
B foo();
}
class C extends B {
}
// later
A a = new A();
C theFoo = (C)a.foo();
Мы знаем a.foo ( )
возвращает тип B.
Когда я выполняю (C) a.foo ()
, это
a
для ввода C
, а затем пытается вызвать foo ()
на нем? foo ()
на a
и преобразование результата в тип C
? Мне трудно определить, и я всегда просто играл на стороне осторожности, добавляя лишние скобки (что неплохая идея для удобства чтения, но теперь мне любопытно)
Это находится в конкретной ссылке на ObjectInputStream.readObject ()
, хотя я не понимаю, как это изменит поведение.