gpt4 book ai didi

java - 为什么 Eclipse 报告从 float 到 double 的转换错误

转载 作者:行者123 更新时间:2023-12-02 12:10:41 25 4
gpt4 key购买 nike

有谁知道为什么 eclipse 在这种情况下报告 double 浮点转换错误?

奇怪的是,即使我禁用该功能来删除不必要的转换,它仍然会被删除并报告为错误。这不是很愚蠢吗?

enter image description here

我正在运行这个版本的 Eclipse:版本:Mars.2 发布 (4.5.2)版本号:20160218-0600

enter image description here

最佳答案

您将装箱与泛型混合在一起,这是 Eclipse 编译器和 Javac 之间的不同之处。在您的特定情况下,这可能已在 Neon 中修复。至少,它在 Oxygen.1 中有效。

考虑以下代码,它可以在 Eclipse 和 Javac 中运行:

Float f = Float.valueOf("1.0");
System.out.println("f: " + f);
double val = f;
System.out.println("val: " + val);

但就您而言,您使用的是 Collection<T> :

Collection<Float> f = Collections.singleton(Float.valueOf("1.0"));
System.out.println("f: " + f);
double val = Collections.min(f); // ECJ thinks Object!
System.out.println("val: " + val);

这里泛型的使用是关键部分,从经验来看,这是Eclipse和Javac最大的不同之处。我无法告诉您具体情况,但在这种情况下,Eclipse 会忽略 T 的事实。集合的 是一个原始包装器,不进行拆箱,而是失败并出现强制转换错误。

TL;DR:使用 Eclipse Oxygen.1 :)

如果你确实不能,请使用 doubleValue()如:

double val = Collections.min(f).doubleValue();

并确保集合不为空且不包含null s。

关于java - 为什么 Eclipse 报告从 float 到 double 的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46575079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com