Jak wywołać konkretny konstruktor nadrzędny z anonimowej klasy wewnętrznej?
Ok, więc wiem, że anonimowa klasa wewnętrzna albo niejawnie rozszerza klasę nadrzędną, albo implementuje interfejs, dlatego należy wywołać konstruktor nadklasy. Jednak nie jestem pewien, jak utworzyć konstruktor dla anonimowej klasy (jeśli jest to możliwe) i bez definiowania konstruktora nie jestem pewien, jak wywoływać super ()! Oto mój kod praktyki:
public class AnonymousConstructor {
public static void main(String[] args) {
//I'm not sure how to explicitly call one of the arg super constructors
MyBob my = new MyBob() {
//I would like to do something like this super("String"); or
//super("String", "String");
};
}
}
class MyBob extends Thread {
MyBob() {
System.out.println("No arg constructor");
}
MyBob(String a) {
System.out.println("Arg constructor");
}
MyBob(String a, String b) {
System.out.println("2 arg constructor");
}
public void run() {
System.out.println("Outer");
}
}
Obawiam się, że jeśli spróbujesz utworzyć anonimową klasę z klasy, która nie ma konstruktora no-arg, kod nie powiedzie się w czasie kompilacji, ponieważ nie ma możliwości przekazania argumentu superkonstruktorowi. Czy jest to ważny problem, a jeśli tak, to czy istnieje sposób na to?