2012-04-04 10 views
0

私が持っている -のClassCastExceptionアドベンチャー

class A { 
    // contains certain set() and get() methods 
} 

class B extends A { 
    public A getAotherMethod() { 
     A a = new A(); 
     // Contains some logic 
     return a 
     } 
} 

class C extends B { 
    // contains certain set() and get() methods 
} 

class D { 
    public Object getMethod() { 

     B b = new B(); 
     // Contains some logic 
     return b.getAnotherMethod() 
    } 
} 


public static void main(String[] args) { 
    A a = new A(); 
    B b = new B(); 
    C c = new C(); 
    D d = new D(); 
    c = (C) d.getMethod(); // This is giving me ClassCastException 
} 
+0

「私は車を持っています。私が壁に向かって運転すると、それは壊れます。 – Ingo

答えて

6
d.getMethod(); 

この

A a = new A(); 
// Contains some logic 
return a 

にキャストすることはできませんクラスのオブジェクトを持っているb.getAnotherMethod()内部でを、呼び出します。クラスC

我々はサブクラスオブジェクトにスーパークラスを割り当てることができますがを参照するが、我々はスーパークラスのオブジェクトへのサブクラス参照、この場合には、あなたによって行われているものを割り当てることはできません。