2012-04-04 3 views
0

Je -ClassCastException aventure

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

"J'ai une voiture, quand je conduis contre un mur, elle se brise." – Ingo

Répondre

6
d.getMethod(); 

Ceci appellera b.getAnotherMethod() interne, qui a

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

L'objet de classe A ne peut pas jeter à classe C

Nous pouvons attribuer objet sous-classe à superclasse référence mais nous ne pouvons pas attribuer superclasse objet à référence de la sous-classe ce qui est fait par vous dans ce cas.