给定抽象父类动态生成特化类的最佳方法是什么?
例如,假设这是我的父类:
public abstract class Parent {
public Parent(int i) {
// initialization here ...
}
@AnImportantAnnotation("")
public abstract Object testMethod();
}
然后我希望有一个接收抽象类的方法,并返回它的实例,例如:
public class Manager {
public static <T> T getInstance(Class<T> c) {
return <"instance of dynamically generated specialization class">;
}
public static void main(String[] args) {
Parent parent = getInstance(Parent.class);
}
}
getInstance
方法返回的实例的类会覆盖Parent
类中的抽象方法。这些生成的方法的代码取决于其相应父方法的注释。
此外,生成的类应该定义与其父类相同的构造函数。例如,生成的类应该等效于:
public class Son extends Parent {
//generated constructor
public Son(int i) {
super(i);
}
public Object testMethod() {
// dynamically generated behaviour guided by annotations on the overridden method
return aReturnValue;
}
}
我更喜欢指向如何仅从内存(没有文件读/写文件)以及如果可能的话不使用外部库(例如,Javassist)。然而,对于依赖于这些库的技术的解释也是非常受欢迎的。 非常感谢您的帮助。