我正在随机编写代码时遇到了一个问题:如何实例化类E(如下所示),该类定义在匿名内部类中;就像:
A c = new A() {
class E{ //Statements
}
};
我正在随机编写代码时遇到了一个问题:如何实例化类E(如下所示),该类定义在匿名内部类中;就像:
A c = new A() {
class E{ //Statements
}
};
new
的程序来实现这个功能:为了实例化一个类,它必须有一个名称。正如匿名内部类所暗示的那样,它们是没有名称的。import java.util.*;
import java.lang.reflect.*;
class B {
B() { System.out.println("B"); }
void foo() { System.out.println("B.foo"); }
}
public class Test{
B b;
void bar() {
b = new B() {
class C { C() { System.out.println("inner C"); } }
void foo() { System.out.println("inner foo"); }
};
b.foo();
}
public static void main(String[] args) throws Exception {
Test test = new Test();
test.bar();
Class<?> enclosingClass = Class.forName("Test$1");
Class<?> innerClass = Class.forName("Test$1$C");
Constructor<?> ctor = innerClass.getDeclaredConstructor(enclosingClass);
Object innerInstance = ctor.newInstance(test.b);
}
}
这将打印:
B
inner foo
inner C