强制转换数字以加倍

时间:2011-06-26 16:13:17

标签: java

我有一堆数值。它们可以是ShortIntegerLongFloatDouble(并且是外部库(snakeYaml)的输出,它们将这些作为类型返回{ {1}})

我想在程序中将这些对象(保证为Object)转换为Numbers值。 (存储空间不是问题)。

当尝试从实际为Double / ClassCastException / Short / Integer的对象进行转换时,Java编译器显然会抛出Long Float

我们将非常感谢任何关于采用最有效方法的提示。

3 个答案:

答案 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要么完全错了,要么你错了。将数字作为对象返回是没有意义的。看一些如何使用它的示例代码会很有趣。