我猜这是一个Java新手问题。以下代码
myClass.addEventListener( MY_EVENT, new EventHandler() {
@Override public void onEvent( String type, Object payload ) {
onEventHappens( (int) payload );
}
});
private void onEventHappens( int value ) {
// do something
}
在Eclipse上可以正常工作(IDE中没有警告或错误,可以执行),但是Android Studio表示
(int) payload
是一个错误; “不可转换的类型;无法将'java.lang.Object'转换为'int'
谁是对的?我知道可能会有关于“不良编码实践”的回应,但是我真正的问题是为什么/为什么两个开发环境如何区别对待Java?
最佳答案
我实际上更倾向于相信Android Studio是正确的。例如,对象可以是字符串,但不一定是数字。因此,编译器可能拒绝冒险。这是逻辑。 Intelliji IDEA给我您的错误:http://i.gyazo.com/158c471d9eb5ab790cd44a0fc310b831.png
myClass.addEventListener( MY_EVENT, new EventHandler() {
@Override public void onEvent( String type, Object payload ) {
try {
onEventHappens( Integer.parseInt(payload) );
} catch (NumberFormatException nfe) {
System.out.println("Exception: " + nfe)
}
}
});
private void onEventHappens( int value ) {
}
想到这一点,我真的很惊讶地看到Eclipse没有给您错误,因为它确实应该给您。您可能无意中禁用了它。