gpt4 book ai didi

java - 反射:使用 Number 作为基元的包装器来调用方法

转载 作者:行者123 更新时间:2023-12-01 18:37:22 25 4
gpt4 key购买 nike

我的任务是使用带有必要信息的字符串来调用 java.lang.Math 的方法。由于只有使用原始数字类型的方法,因此我使用 Number 作为包装器,然后它获取从 String 解析的值。

Number value = null;
switch (attributClass) {
[...]//parse the attribute into "value"
}
Method m = null;
try{
m = Class.forName("java.lang.Math").getDeclaredMethod(mName, value.getClass());
...

现在我的问题是出现以下异常:

java.lang.NoSuchMethodException: java.lang.Math.acos(java.lang.Double) at java.lang.Class.getDeclaredMethod(Unknown Source)

我想发生这种情况是因为 Double 不是原始类型 double,但是有什么方法可以从 Number 中获取原始类型吗?

最佳答案

据我所知,没有将包装类转换为原始类的标准方法,反之亦然。

获取包装类的原始类的一种巧妙方法是 wrapperClass.getDeclaredField("TYPE").get(null) (因为每个包装器都定义了这样一个字段)。如果您不想这样做,您可以创建 Map<Class, Class>从包装器映射到基元,并用 8 种基元类型及其各自的包装器填充它。

关于java - 反射:使用 Number 作为基元的包装器来调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21356817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com