如何将字符串转换为某种类型的类,纯粹根据 .getClass() 返回的内容扩展 Number [关闭]

问题描述 投票:0回答:1

如果我缺少您需要的详细信息,请告诉我!

我有一根绳子,随它去吧

String input;

输入中会有一个数字,但它可以是一个字节、int float等。

现在有方法

putStringToMap(Number value, String input){
Number p = NumberFormat.getInstance().parse(input);
    if(p.getClass().equals(Long.class)){
        *some map*.put(name, value.getClass().cast(p.longValue()));
    }else {
        *some map*.put(name, value.getClass().cast(p.doubleValue()));
    }//Doesn't work bad code
}

地图看起来有点像这样:

public HashMap<X,Y> settings=new HashMap<>();

X 是一个字符串,Y 可以是任何东西。 但在该方法中,我已经知道我拥有的值是一个数字。

现在我知道这没有做任何事情,但在我的代码中它会很有用。 这是我的具体问题是,我无法根据值的类型将数字转换为整数、长整型、双精度型等。

如何转换 长 -> 整数、字节等。 双精度 -> 浮动 所有这些都是 Java 中的包装器,所以我必须使用通用方法,除非你知道更好的方法 纯粹基于 value.getClass() 返回的内容。我希望避免我长期烦人的 if else 链。

我已经尝试了很多东西,但我得到的最接近的是上面的,我已经说出了我的期望。

java string casting
1个回答
-2
投票

value.getClass().getDeclaredMethod("valueOf",String.class).invoke(null,string));

© www.soinside.com 2019 - 2024. All rights reserved.