2017-10-04 22 views
0

このシナリオでは、浮動小数点型のキャストエラーをeclipseが報告している理由は誰にも分かりますか?なぜeclipseはfloatからdoubleにキャストエラーを報告するのですか

不要なキャストを削除する機能を無効にしても、それは削除され、エラーとして報告されます。これはちょっとばかげていませんか? バージョン:Mars.2リリース(4.5.2) ビルドID:20160218から0600

enter image description here

+0

Eclipse Oxygen.1でこのエラーを再現することはできません。それは修正済みのバグ(https://stackoverflow.com/a/46273081/6505250)が修正されるようだ。 – howlger

+0

Neonで再生できません。 – shmosel

+0

この問題がない酸素を実行しているバージョンがあります。私の火星を酸素にインストールする必要があるように聞こえる。フィードバック感謝! – simgineer

答えて

1

あなたが混合されているボクシング

enter image description here

私はこの日食のバージョンを実行していますよジェネリックとそれはEclipseコンパイラとJavacの間で違います。あなたの特別なケースでは、これはおそらくネオンで修正されました。少なくとも、それは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がプリミティブラッパーでunboxingを行わず、代わりにキャストエラーが発生するという事実を無視します。

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

あなたは本当に、のようにdoubleValue()を使用できない場合は、次の

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

、コレクションが空でないとないことを確認してくださいnullが含まれていません。

関連する問題