Ich habe eine Oberklasse, welche zwei Methoden ich überschreiben möchte. Hier ist mein Code:Erweiterung Oberklasse und ClassCastException
public class MyCustomClass extends SomeSuperClass {
protected MyCustomClass(params) {
super(params);
}
@Override
public void method1() {
super.method1();
/* here goes my code */
}
@Override
public void method2() {
super.method2();
/* here goes my another code */
}
ich einige Konstruktor haben, die SomeSuperClass Objekt als Parameter übergibt, und dem, was ich als nächstes tun:
MyCustomClass object;
/* now i have object of type SomeSuperClass,
but with my own method1() and method2() */
object = (MyCustomClass) MyCustomClass.item(blahblah);
/* eclipse suggests casting, because MyCustomClass.item()
constructor still returns SomeSuperClass object */
otherobject = OtherConstructor.object(object);
//OtherConstructor passes SomeSuperClass object
Das scheint richtig zu sein, aber ich bin immer java. lang.ClassCastException in SomeSuperClass während der Ausführung.
Wenn ich SomeSuperClassObject erstellen, verliere ich meine überschriebenen Methoden.
Mit Casting, auch wenn es keine Fehler in der Finsternis gibt, stürzt die Anwendung ab. Mit anderen Worten, wie kann ich SomeSuperClass mit meinen eigenen Methoden überschreiben, und immer noch SomeSuperClass Objekt mit OtherConstructor verwenden? Wenn es wichtig ist, ist dieser Code für Android App.
Was ist der Code für 'MyCustomClass.item'? – Powerlord
es ist nicht überschrieben, so ist es (und es ist wirklich, nach Eclipse-Code-Assistenten) einfach superclass Methode – artemy
zu pedantisch zu verwenden, 'MyCustomClass.item()' ist kein "Konstruktor" noch "OtherConstructor.object() ' –