我有一堆数值。它们可以是Short
,Integer
,Long
,Float
或Double
(并且是外部库(snakeYaml)的输出,它们将这些作为类型返回{ {1}})
我想在程序中将这些对象(保证为Object
)转换为Numbers
值。 (存储空间不是问题)。
当尝试从实际为Double
/ ClassCastException
/ Short
/ Integer
的对象进行转换时,Java编译器显然会抛出Long
Float
。
我们将非常感谢任何关于采用最有效方法的提示。
答案 0 :(得分:4)
他们可以是短期,整数,长期,浮动或双重
这些类都是Number
类的子类,这意味着您始终可以使用Number.doubleValue
方法。
示例:强>
Number[] nums = { new Double(1.2), new Integer(5), new Float(3.0) };
double num1 = nums[0].doubleValue();
double num2 = nums[1].doubleValue();
double num3 = nums[2].doubleValue();
或者,如果你真的想要Double
值,你可以依靠自动装箱,只需这样做:
Double num1 = nums[0].doubleValue();
Double num2 = nums[1].doubleValue();
Double num3 = nums[2].doubleValue();
答案 1 :(得分:2)
使用Number.doubleValue()方法来实现这一目标。使用自动装箱,您可以直接确定其返回值Double
。
答案 2 :(得分:1)
首先,您需要转换为Double
而不是double
。但这只适用于真正双打的对象而不是整数或长或浮动等。
要解决此问题,请转到Number
并使用doubleValue()
Object o = 10;
double i = ((Number)o).doubleValue();
PS。我对snakeYaml不太熟悉,但你描述的api要么完全错了,要么你错了。将数字作为对象返回是没有意义的。看一些如何使用它的示例代码会很有趣。