我正在处理的项目已抛出以下错误(名称混淆)
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工作室功能才能正确编译这个项目,但我不知道最近会发生什么。
答案 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吗?