我猜这是一个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没有给您错误,因为它确实应该给您。您可能无意中禁用了它。

10-07 19:26
查看更多