Допустим, у меня есть следующая настройка
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(), хотя я не понимаю, как это изменит поведение.