我需要在 Java 中进行一些反射方法调用。这些调用将包括具有基本类型(int、double 等)参数的方法。反射查找方法时指定此类类型的方式有 int.class、double.class 等。
挑战在于我接受来自外部源的输入,该输入将动态指定类型。因此,我也需要动态地提出这些类引用。想象一个分隔文件,其中包含方法名称列表和参数类型列表:
doSomething int double
doSomethingElse java.lang.String boolean
如果输入是这样的java.lang.String
,我知道我可以使用Class.forName("java.lang.String")
回到那个类实例。有没有办法使用该方法或其他方法来恢复原始类型类?
Edit:感谢所有受访者。很明显,没有内置的方法可以干净地做我想做的事情,所以我将满足于重用ClassUtils
来自 Spring 框架的类。它似乎包含 Class.forName() 的替代品,可以满足我的要求。
The Class
正如您所说,可以使用例如获取原始类型的实例int.class
,但也可以使用类似的方法获得相同的值Integer.TYPE
。每个原始包装类都包含一个静态字段,TYPE
,它具有相应的原始类实例。
您无法通过以下方式获取原始类forName
,但您可以从现成的课程中获得它。如果你绝对必须使用反射,你可以尝试这样的事情:
Class clazz = Class.forName("java.lang.Integer");
Class intClass = clazz.getField("TYPE").get(null);
intClass.equals(int.class); // => true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)