Ok, So I know that an anonymous inner class is either implicitly extending a parent class or implementing an interface, and therefore a constructor of the superclass will need to be called. However, I'm not sure how to create a constructor for the anonymous class (if this is possible) and without defining a constructor I'm not sure how to make calls to super()! Here is my practice code:
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");
}
}
My concern is that if you try to make an anonymous class from a class that doesn't have a no-arg constructor that the code will fail at compile time because there is no way to pass an argument to the superconstructor. Is this a valid concern, and if so, is there a way around this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…