【发布时间】:2014-01-15 10:14:23
【问题描述】:
好的,所以我知道匿名内部类要么隐式扩展父类,要么实现接口,因此需要调用超类的构造函数。但是,我不确定如何为匿名类创建构造函数(如果可能的话),并且如果不定义构造函数,我不确定如何调用 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");
}
}
我担心的是,如果您尝试从没有无参数构造函数的类创建匿名类,那么代码将在编译时失败,因为无法将参数传递给超构造函数。这是一个有效的担忧吗?如果是,有没有办法解决这个问题?
【问题讨论】:
-
new MyBob("str") { } 可以。
标签: java constructor inner-classes scjp