Stellen wirAufruf Super Methode aus einer anonymen inneren Klasse innerhalb des überschriebenen Methode
class A {
public void m() {
System.out.println("A - > m()");
}
}
und ich möchte die Methode m() überschreiben auf Klassenerstellung ohne Herstellung einer zweiten Unterklasse B eine Klasse erweitern A.
public static void main(String[] args) {
A a = new A() {
@Override
public void m() {
System.out.println("Override - > m()");
new Thread(new Runnable() {
@Override
public void run() {
// I want to be able to call the super method.
// This is illegal!
A.super.m();
}
}).start();
}
};
a.method();
}
Derzeit meine Lösung ist eine private Methode zu erstellen, die die super.m nennt()
A a = new A() {
private void superMethod() {
super.m();
}
@Override
public void m() {
System.out.println("Overrided - > m()");
new Thread(new Runnable() {
@Override
public void run() {
superMethod();
}
}).start();
}
};
a.m();
Ich möchte wissen, warum ich A.super.m() nicht schreiben kann und gibt es eine andere Möglichkeit, diese Aufgabe auszuführen.
Könnte ein [local Klasse] (http://docs.oracle.com/javase/ tutorial/java/javaOO/localclasses.html) Ihren Bedürfnissen entsprechen? – sp00m
Nun, es könnte, aber das war tatsächlich, was ich versuchte zu vermeiden. – kirilv