Сегодня разбирался с интересной ошибкой. Во время отладки GWT кода словил NullPointerException, хотя на всех комплексах и на бою данной ошибки не наблюдалось. Проблемы были в этом участке кода:
Ну а по-хорошему, в gwt коде правильнее было бы написать так:
if (someEnum.equals(SomeEnum.SOME_VALUE)) { a = "Hello world"; }По некоторым причинам someEnum вдруг оказался null, что приводило к NPE. Сразу появилась мысль, что gwt позволяет компилировать equals для enum в знак равенства. Собственно, так и оказалось, но чтобы убедиться в этом пришлось сделать отладочную detailed-compiled сборку, покопаться в javaScript и найти тот самый участок кода:
someEnum == (ru_package_SomeEnum_$clinit__V() ,ru_package_SomeEnum_SOME_1VALUE) && (a = $intern_12224);Видно, что этот код уже позволяет значение null. Заодно узнал об операторе запятая, которого нет в java, но есть в javaScript.
Ну а по-хорошему, в gwt коде правильнее было бы написать так:
if (SomeEnum.SOME_VALUE.equals(someEnum)) { a = "Hello world"; }
Комментариев нет :
Отправить комментарий