このシナリオでは、浮動小数点型のキャストエラーをeclipseが報告している理由は誰にも分かりますか?なぜeclipseはfloatからdoubleにキャストエラーを報告するのですか
不要なキャストを削除する機能を無効にしても、それは削除され、エラーとして報告されます。これはちょっとばかげていませんか? バージョン:Mars.2リリース(4.5.2) ビルドID:20160218から0600
このシナリオでは、浮動小数点型のキャストエラーをeclipseが報告している理由は誰にも分かりますか?なぜeclipseはfloatからdoubleにキャストエラーを報告するのですか
不要なキャストを削除する機能を無効にしても、それは削除され、エラーとして報告されます。これはちょっとばかげていませんか? バージョン:Mars.2リリース(4.5.2) ビルドID:20160218から0600
あなたが混合されているボクシング
私はこの日食のバージョンを実行していますよジェネリックとそれは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
が含まれていません。
Eclipse Oxygen.1でこのエラーを再現することはできません。それは修正済みのバグ(https://stackoverflow.com/a/46273081/6505250)が修正されるようだ。 – howlger
Neonで再生できません。 – shmosel
この問題がない酸素を実行しているバージョンがあります。私の火星を酸素にインストールする必要があるように聞こえる。フィードバック感謝! – simgineer