Java ordem de fundição

Digamos que tenho a seguinte configuração

class A {
    B foo();
}

class C extends B {

}

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

Nós sabemosa.foo() retorna o tipo B.

Quando eu faço(C)a.foo(), é iss

Castinga digitarC tentando ligar parafoo() neleCallingfoo() ema e converter o resultado para digitarC?

Estou achando difícil determinar, e sempre joguei com cautela com parênteses extras (o que não é uma má idéia, para facilitar a leitura, mas agora estou curioso)

Esta é uma referência específica aObjectInputStream.readObject() embora eu não veja como isso mudaria o comportament

questionAnswers(2)

yourAnswerToTheQuestion