如何通过Java Reflection动态创建Java类?

Reflection用于加载java类类并动态操作它们。 但我遇到了一个奇怪的问题,就是问我如何通过Reflection动态创建Java类。我的意思是这些类没有编译或者有源代码,直到我们想要创建它们。 真的有可能吗? 任何例子?

您可以尝试ASM ASM

或字节码工程库

字节码工程库

用于操作,在运行时创建类

在.NET中,我们有Reflection.Emit(C#)可以做Reflection.Emit

不确定是否有直接的java等价物。 你可以在SO上看到另一个类似的问题,这里的Java相当于reflection.emit

您可以看看Bean Shell的eval方法它允许您即时执行任何Java代码,而无需将代码编译为字节码。 您可以将包含类的所有Java代码的字符串传递给它的eval方法,然后您将获得动态创建的类的实例。 如果您对此感兴趣,请告诉我,并希望我举个例子。

在我看来,您不需要reflection,只需要直接从您的代码中调用JavaCompiler: JavaCompiler 。

也许Apache DynaBeans会这样做。 你可以找到一些关于创建和操作它们的教程,例如。 这里: http : //www.javaranch.com/journal/2003/07/TouringTheCommonsPart1.html