Reflection用于加载java类并动态操作它们。但我遇到了一个奇怪的问题,问我如何通过Reflection动态创建Java类。我的意思是,在我们想要创建这些类之前,这些类不会被编译或有源代码。真的有可能吗?有什么例子吗?
您可以看看Bean Shell的eval方法。它允许您动态执行任何Java代码,而无需将代码编译为字节码。您可以将一个包含类的所有Java代码的字符串传递给它的eval方法,然后您将获得动态创建的类的一个实例。如果你对此感兴趣,请告诉我,并希望我给你举个例子。
在我看来,您不需要反射,只需要直接从代码中调用JavaCompiler:JavaCompiler。
您可以尝试ASMASM-
或字节码工程库
字节码工程库
用于操作,在运行时创建类
在.NET中,我们有Reflection.Emit(C#),它可以做到这一点反射。发射
不确定是否有直接的java等价物。您可以在SO上看到另一个类似的问题,这里是反射的Java等价物。发射
也许Apache DynaBeans可以。你可以在这里找到一些关于创建和操作它们的教程:http://www.javaranch.com/journal/2003/07/TouringTheCommonsPart1.html