gpt4 book ai didi

java - 在 Java 中动态转换为原语

转载 作者:行者123 更新时间:2023-11-29 06:17:46 24 4
gpt4 key购买 nike

编辑:此问题已得到解决。感谢所有提供帮助的人。在将对象转换为正确的包装类后调用该方法。但是 String.valueOf() 要实现相同的效果要简单得多。

你好--

我想做的事情甚至可能是不可能的。我已经花了几个小时研究和试验各种事情,所以我想我终于要四处打听一下,看看是否有人知道这是否可行。

是否有可能使用反射将未知类型的基元的包装器动态转换为基元?

我基本上是在尝试创建一个通用的 toString 函数,它可以处理将任何类型的基元类型转换为字符串。这样一个看似简单的事情是令人沮丧的困难(而且我知道我可以测试每种类型以查看它是否属于 Wrapper.class 类型并具体转换它,但在这一点上我只是出于固执而追求它)。

以下抛出 ClassCastException。 primClass 类似乎是正确的(打印 primClass.getName() 时给出“int”)。

    private String toString(Number obj){
String result = "";
try{
Class objClass = obj.getClass();
Field field = objClass.getDeclaredField("TYPE");
Class primClass = (Class)field.get(obj);
Method method = objClass.getMethod("toString", new Class[]{primClass});
Object args = new Object[]{primClass.cast(obj)};
result = (String)method.invoke(null, args);
}catch(Exception ex){
//Unknown exception. Send to handler.
handleException(ex);
}
return result;
}

所以我有点不知所措,真的。有人有主意吗?任何帮助将不胜感激。

最佳答案

也许我遗漏了什么,但是 obj.toString() 可以。

如果您查看实现,它正在调用 String.valueOf(value),后者又调用 Double.toString(..)Long。 toString(..) 或其他。因此,调用 toString() 会自动调用所需的方法。没有您的任何反射(reflect)。

关于java - 在 Java 中动态转换为原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416183/

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