如何将double类型转换为object类型?

4

我正在编写一个程序的一部分,该程序从文本文件中读取数据。

当我想通过setValue(object)设置JSpinner的值时,出现了问题。

我的数据是双精度浮点数,所以我需要将其转换为对象,但是怎么做呢?

LoadData open = new LoadData();
data.setFz(open.giveAwayData());
spinner_1.setValue(data.getFz()); // Fz is double

2
我刚试了一下,可以直接将双精度浮点数作为参数使用,无需强制转换或转换类型;) - eric.m
我重新启动了 Eclipse,现在一切正常了。奇怪的错误。 - Xalion
不幸的是,这并不像你想象的那样奇怪。Eclipse 有时会失去理智,你必须重新启动。这种情况发生得太频繁了。你只需要习惯它(就像我一样),或者切换到 IntelliJ(据说更稳定,但我不确定)。 - ajb
3个回答

3
使用 Double.valueOf(data.getFz())。关于基本类型和包装类之间的差异的解释可以在这里找到;基本类型性能更好,但当您需要一个Object时,包装类就派上用场了。一个常见的例子是使用泛型,它不能使用基本类型。 然而,一个double可以传递给需要Double或其超类之一的东西。这是因为有自动装箱。是的,我很喜欢链接。

它不起作用...我需要对象,而不是double。它应该是setValue(object)。 - Xalion
就像我说的,自动装箱应该可以解决你的问题。此外,DoubleObject的子类。但你总是可以使用Object obj = data.getFz();(自动装箱让它起作用)。 - bcsb1001
永远不要使用 new Double。请始终使用 Double.valueOf - VGR
@VGR,是的,我忘记了Double也有这个。 - bcsb1001

3

尝试将其转换为Double(大写):

spinner_1.setValue((Double) data.getFz());

1
如果这是一个答案,它不应该以问号结尾。 :) 此外,展示代码将非常有帮助。我认为这是正确的答案,但你只需要再加一点就可以让它成为一个好的答案。 - ajb
理想情况下,这应该是一条注释,但我还不能发表评论,所以请谅解。不过我会根据您的建议进行编辑。 - colouredmirrorball
我不明白什么是“capital”。请给一些代码示例,谢谢。 - Xalion
@Xalion中的“capital”表示大写字母。Java区分doubleDouble,前者是原始类型而不是对象,后者是对象,以大写字母D开头。通常情况下,Java会自动在两者之间进行转换(装箱和拆箱)。 - ajb
@bcsb1001 参数类型是“Object”;我查了一下“JSpinner”来确认这一点。显然,IDE疯了。 - ajb
显示剩余2条评论

2
您可以使用例如Double构造函数将double基本类型转换为Double对象
Double dObj = new Double(d);

或者可以像这样将其转换为双精度浮点数: ```Double.parseDouble()```
spinner_1.setValue((Double)data.getFz());

1
为什么需要强制类型转换或显式的Double创建?自动装箱应该可以处理它,对吧... - Codebender
@Codebender:确实!new Double(data.getFz())没问题。 - Rahul Tripathi
它是setValue(object)。我需要对象在里面...如何设置数字...应该很容易。 - Xalion
@Xalion:你可以尝试使用 setValue(((Number)object).doubleValue()) - Rahul Tripathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接