如果我现在只通过反射在运行时使用父类,那么如何在Java中动态创建一个类?
// I only know what ParentClass is at runtime
// but I know that ParentClass implements SomeInterface.
public class MyClass extends ParentClass implements SomeInterface {
// I know the method I want to override,
// and that ParentClass has a no-argument constructor.
@Override
public int method(int arg) {
return 42 * arg;
}
}
E.g。在Python中你可以使用
MyClass = type("MyClass", (ParentClass,), {
'method': lambda self, arg: 42 * arg
})
# or even easier
class MyClass(ParentClass):
def name(self, arg):
return 42 * arg
那么,Java中是否存在Python的type(name, bases, dict)
等同物?
答案 0 :(得分:1)
在java中没有直接/简单的方法。我们需要创建类文件并将其加载到类加载器。您可以参考以下答案Writing and implementing new Java class files during run-time。几个第三方库,如 ASM,CGLIB,JAVASSIST ,有助于动态创建代码。