Порядок преобразования Java

Допустим, у меня есть следующая настройка

class A {
    B foo();
}

class C extends B {

}

// later
A a = new A();
C theFoo = (C)a.foo();

Мы знаем a.foo ( ) возвращает тип B.

Когда я выполняю (C) a.foo () , это

  1. Приведение a для ввода C , а затем пытается вызвать foo () на нем?
  2. Вызов foo () на a и преобразование результата в тип C ?

Мне трудно определить, и я всегда просто играл на стороне осторожности, добавляя лишние скобки (что неплохая идея для удобства чтения, но теперь мне любопытно)

Это находится в конкретной ссылке на ObjectInputStream.readObject () , хотя я не понимаю, как это изменит поведение.

11
задан corsiKa 23 April 2011 в 04:54
поделиться