是否可以在Java中的运行时撰写新类?
这是什么意思?重新启动?编译器API?
我可以做
package tests;
public class TryReflection02 {
interface A {
}
public static void main(String[] args) {
Object o = new A() {};
System.out.println( o.toString() );
o = A.class.newInstance() // exception
}
}
我可以执行相同的A.class
值吗?
不,你不能。A
是一个接口,只能实例化类。
您的 can 做的是使用一个使用一些欺骗的库/助手来创建实现接口和实例的类。JDK的Proxy
类包含静态方法来做到这一点。还有一些工具可以做到与测试相关用例进行自定义磨砂:例如。
这些工具完全按照您在这个问题的标题中的暗示:它们不是实例化界面,而是生成一个实现界面的新类,然后实例化该类。