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
a
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