在Java中是否存在Python的类型(name,bases,dict)?

时间:2014-11-04 05:03:00

标签: java reflection

如果我现在只通过反射在运行时使用父类,那么如何在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)等同物?

1 个答案:

答案 0 :(得分:1)

在java中没有直接/简单的方法。我们需要创建类文件并将其加载到类加载器。您可以参考以下答案Writing and implementing new Java class files during run-time。几个第三方库,如 ASM,CGLIB,JAVASSIST ,有助于动态创建代码。