2016-05-17 4 views
0

にショート比較するときに私が働いているプロジェクトは以下のエラーを投げてきたClassCastExceptionがスロー問題は、エラーが次のようになります引き起こしているラインです。Androidは</p> <pre><code>java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short at com.package.myproject.Object.method(Object.java:656) </code></pre> <p>(名前が難読化)リテラル

if ((fileVerMaj.value > 1 || (fileVerMaj.value == 1 && fileVerMin.value >= 24))) 

ここで変数はすべてShort型です。このコードはEclipseでコンパイルされたときに機能しますが、Android Studioでコンパイルされたときには機能しません。この問題を解決するために、ShortオブジェクトのintValue()メソッドを使用し、リテラルをshorts(primitve型とObjectの両方)にキャストしようとしました。何も行動を変えていない。

このプロジェクトを正しくコンパイルするには、Android Studiosの機能が必要ですが、ここで何が起こっているのかというアイデアはありません。

+0

これは、何かを明確にするのに十分なコードではありません。 –

+0

"私はShortオブジェクトintValue()を使ってみました" - うまくいきました。 "リテラルをショートパンツにキャスト" - あまりにもうまくいったはずです。 - 私は2番目の@MuratK。あなたのコードはおそらく実際の問題を伝えるのに十分ではありません。 – JimmyB

+0

おそらく、それはJDKのバージョンやそれ以外のもので、Android Studioには関係しません。 ASとEclipseで使用されているJDKのバージョンを確認してください。手動でキャストすることなく、Android Studio 2.1.1とJDK 7ではすべて正常に動作します。 – comrade

答えて

0

あなたがしてあれば交換してくださいすることができますよりもその大きい場合、彼らは等しく、正の値である場合にcompareToメソッドは、時と呼ばれるオブジェクトがパラメータ未満の場合、負の値を返します0

if ((fileVerMaj.value.comapreTo(new Short((short) 1)) > 0 || (fileVerMaj.value.compareTo(new Short((short) 1)) == 0 && fileVerMin.value.compareTo(new Short((short) 24)) >= 0))) 

パラメータ。すべての人は、この比較は、それが何のために少し残忍であると言いました。プリミティブなショーツやintの代わりにShort値を使う必要がある理由を説明できますか?

+0

私はこれらの変数を使って、ファイルヘッダから読み込んだデータを保存しています。データは16ビットとなる。そのデータを整数に読み替えるコードを変更することは、かなり複雑なプロセスになります。 – Blazerhawk

関連する問題