Итак, я знаю, что анонимный внутренний класс либо неявно расширяет родительский класс, либо реализует интерфейс, и поэтому необходимо вызвать конструктор суперкласса. Тем не менее, я не уверен, как создать конструктор для анонимного класса (если это возможно), и без определения конструктора я не уверен, как делать вызовы super()! Вот мой код практики:
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");
}
}
Меня беспокоит, что если вы попытаетесь сделать анонимный класс из класса, у которого нет конструктора no-arg, который не будет работать во время компиляции, потому что нет способа передать аргумент суперконструменту. Является ли это серьезной проблемой, и если да, есть ли способ обойти это?