在将Short与literal进行比较时,Android会抛出ClassCastException

时间:2016-05-17 14:28:09

标签: 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()方法并将文字转换为short(初始类型和Object)。没有什么改变了这种行为。

我需要一些Android工作室功能才能正确编译这个项目,但我不知道最近会发生什么。

1 个答案:

答案 0 :(得分:0)

您可以尝试将if替换为:

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,如果大于参数则返回正值。所有这一切都说这种比较对它的作用有点过分。你能解释为什么你需要使用Short值而不是原始短路甚至是ints吗?