2014-11-04 35 views
0

我如何在Java中动态创建一个类,如果我现在只有父类在运行时通过反射?在Java中是否有与Python的`type(name,bases,dict)`类似的东西?

// 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; 
    } 
} 

例如,在Python中你可以使用

MyClass = type("MyClass", (ParentClass,), { 
    'method': lambda self, arg: 42 * arg 
}) 
# or even easier 
class MyClass(ParentClass): 
    def name(self, arg): 
     return 42 * arg 

那么,有没有一个相当于Python的type(name, bases, dict)在Java中?

+0

为什么你需要在运行时做到这一点?看看'Proxy'。 – 2014-11-04 05:13:01

回答

1

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

+0

谢谢,JavaAssist为我工作。 – kay 2014-11-04 06:52:11

相关问题