我需要在Java中进行一些反射方法调用。这些调用将包括具有原始类型(int,double等)参数的方法。反射地查找方法时,指定此类类型的方法是int.class,double.class等。
挑战在于我要接受来自外部源的输入,该输入将动态指定类型。因此,我还需要动态地提出这些Class引用。想象一个带分隔符的文件,其中包含方法名称列表和参数类型列表:
doSomething int double doSomethingElse java.lang.String boolean
如果输入类似java.lang.String,我知道我可以使用Class.forName("java.lang.String")该Class实例。有什么方法可以使用该方法或其他方法来恢复原始类型Classes?
java.lang.String
Class.forName("java.lang.String")
编辑: 感谢所有受访者。显然,没有内置的方法可以干净地执行我想要的操作,因此我将决定重用ClassUtilsSpring框架中的类。它似乎包含Class.forName()的替代品,可以满足我的要求。
ClassUtils
Spring框架包含一个实用程序类ClassUtils,该类包含静态方法forName。此方法可用于您描述的确切目的。
如果您不希望依赖于Spring:该方法的源代码可以在 e 中找到 。 G。 了这里 对他们的公共仓库。该类源代码在Apache 2.0模型下获得许可。
但是请注意,该算法使用原始类型的硬编码映射。
编辑: 感谢评论员DávidHorváth和Patrick指出断开的链接。