Ошибка «неожиданный тип» при сравнении значений перечисления - PullRequest
2 голосов
/ 02 сентября 2011

Большинство людей, которых я видел с этой проблемой, использовали = там, где им нужно ==.В чем причина моей проблемы?

com\callmeyer\jopp\FieldCoordinator.java:303: unexpected type
required: class, package
found   : variable
                    if (event.getType() == event.Type.INSERT) {
                                           ^

Определение перечисления и метод доступа:

public class DataLayoutEvent {
    public static enum Type { INSERT, DELETE, RENAME, MOVE, RESIZE }

    private Type type = null;

    public Type getType() {
        return type;
    }

    ...
}

и метод, в котором возникает ошибка:

public void layoutChanged(DataLayoutEvent event) {
    if (event.getType() == event.Type.INSERT) {
        fieldAdded(event.getField(), event.getToIndex());
    }

    ...

Ответы [ 3 ]

4 голосов
/ 02 сентября 2011

Использовать статический доступ вместо доступа к экземпляру:

if (event.getType() == DataLayoutEvent.Type.INSERT) {

Вы можете (но не должны) использовать доступ к экземпляру для статических элементов (методов и полей), но не для внутренних типов.

3 голосов
/ 02 сентября 2011

Это должно быть просто:

// From within DataLayoutEvent
if (event.getType() == Type.INSERT) {

или

// From other classes
if (event.getType() == DataLayoutEvent.Type.INSERT) {

Часть Type - это имя типа - его нельзя определить по значению переменной (event).Кстати, вы можете импортировать DataLayoutEvent.Type, если хотите использовать первую форму из другого места.

1 голос
/ 02 сентября 2011

Я думаю, вам нужно ссылаться на Type по-другому:

if (event.getType() == DataLayoutEvent.Type.INSERT) { ... }
...