我需要在 Java 中进行一些反射方法调用。这些调用将包括具有原始类型(int、double 等)参数的方法。在反射查找方法时指定此类类型的方法是 int.class、double.class 等。
挑战在于我正在接受来自外部源的输入,该输入将动态指定类型。因此,我也需要动态地提出这些类引用。想象一个带分隔符的文件,其中包含方法名称列表和参数类型列表:
doSomething int double
doSomethingElse java.lang.String boolean
如果输入类似于 java.lang.String
,我知道我可以使用 Class.forName("java.lang.String")
回到那个 Class 实例。有什么方法可以使用该方法或其他方法来取回原始类型类吗?
编辑: 感谢所有受访者。很明显,没有内置的方法可以干净地做我想做的事,所以我将满足于重用 Spring 框架中的 ClassUtils
类。它似乎包含 Class.forName() 的替代品,可以满足我的要求。
原文由 Mike Furtak 发布,翻译遵循 CC BY-SA 4.0 许可协议
Spring 框架包含一个实用程序类 ClassUtils ,其中包含静态方法 forName。此方法可用于您描述的确切目的。
如果您不喜欢依赖 Spring:可以找到 该方法的源代码e。 G。 在他们的公共存储库中。类源代码在 Apache 2.0 模型下获得许可。
但是请注意,该算法使用原始类型的硬编码映射。
编辑: 感谢评论者 Dávid Horváth 和 Patrick 指出断开的链接。