0
有沒有人知道爲什麼eclipse在這種情況下報告一個double來拋出float錯誤?爲什麼eclipse報告將float錯誤從float轉換爲double
奇怪的是,即使我禁用該功能以刪除不必要的投射,它仍會被移除並報告爲錯誤。這不是很愚蠢嗎?
我運行此版本的Eclipse: 版本:Mars.2版本(4.5.2) 版本ID:20160218-0600
有沒有人知道爲什麼eclipse在這種情況下報告一個double來拋出float錯誤?爲什麼eclipse報告將float錯誤從float轉換爲double
奇怪的是,即使我禁用該功能以刪除不必要的投射,它仍會被移除並報告爲錯誤。這不是很愚蠢嗎?
我運行此版本的Eclipse: 版本:Mars.2版本(4.5.2) 版本ID:20160218-0600
你混合拳擊泛型和Eclipse編譯器和Javac之間的差異。在你的具體情況下,這可能是在霓虹燈固定的。至少,它適用於氧氣。
考慮下面的代碼,它工作在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。
我無法用Eclipse Oxygen.1重現此錯誤。這似乎是[更新](https://stackoverflow.com/a/46273081/6505250)將解決的已經修復的錯誤。 – howlger
無法用霓虹燈再現。 – shmosel
我確實有一個運行氧氣的版本,沒有這個問題。聽起來像我應該更新我的火星安裝到氧氣。欣賞反饋! – simgineer