如果我缺少您需要的详细信息,请告诉我!
我有一根绳子,随它去吧
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 链。
我已经尝试了很多东西,但我得到的最接近的是上面的,我已经说出了我的期望。
value.getClass().getDeclaredMethod("valueOf",String.class).invoke(null,string));