にキャスティング場合:のJava(インタフェースおよびクラス)
interface I{}
class A implements I{}
class B extends A{}
class C extends B{}
A a = new A();
B b = new B();
Why a = (B)(I)b; is correct
but b = (B)(I)a; is false?
私は非常に混乱することにキャスト見つけ、私はキャストをダウンすることができますかアップオブジェクトをキャストした場合に理解するための最良の方法は何ですか?
のタイプではありませんか?あなたが '私 'の言葉をすべて削除した場合、' a =(B)b; 'と' b =(B)a; –
@JonSkeetこれはJavaの試験問題です。なぜ彼らがInterface "I"をキャストするのかがとても混乱しています。 – OPK
両方のキャストは正しいです(実行時にコンパイルしても失敗しなくても)。具体的には、Java 7以上でコンパイルできないものは何ですか? – Makoto