2016-05-17 77 views
0

我的工作一直在被抛出以下错误的项目(名称混淆)的Android抛出比较短的时候抛出ClassCastException字面

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short 
     at com.package.myproject.Object.method(Object.java:656) 

的问题是,导致错误看起来像这样的线路。

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

这里的变量都是Short类型。此代码适用于在Eclipse中编译时编译,但在Android Studio中编译时不适用。为了解决这个问题,我尝试了使用Short对象的intValue()方法并将文字转换为短裤(primitve类型和Object)。没有什么改变了行为。

我需要一些Android Studios功能来正确编译这个项目,但我对这里发生的事情没有想法。

+0

这是不足以澄清任何事情的代码。 –

+0

“我试过使用Short对象intValue()” - 应该已经工作了。 “把文字写成短裤” - 也应该起作用。 - 我第二@MuratK。因为你的代码可能不够完整,无法传达实际问题。 – JimmyB

+0

也许它与JDK版本或其他内容有关,与Android Studio无关。检查在AS和Eclipse中使用的JDK版本。所有在Android Studio 2.1.1和JDK 7中均可正常工作,无需任何手动投射。 – comrade

回答

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))) 

CompareTo方法返回一个负值如果呼吁对象是小于参数,0,如果它们是相等的,并且如果其大于正值参数。所有这些说比较对于它的功能有点矫枉过正。你能解释为什么你需要使用短值而不是原始短裤甚至整数?

+0

我正在使用这些变量来存储从文件头中读取的数据。数据碰巧是16位。更改代码将数据读入整数将是一个相当复杂的过程。 – Blazerhawk

相关问题