比较枚举值时出现“意外类型”错误

时间:2011-09-02 16:20:18

标签: java enums compiler-errors equals-operator

我见过这个问题的大多数人都使用=,他们需要==。是什么原因引起了我的问题?

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 个答案:

答案 0 :(得分:4)

使用静态访问而不是实例访问:

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

您可以(但不应该)对静态成员(方法和字段)使用实例访问,但不能对内部类型使用实例访问。

答案 1 :(得分:3)

应该是:

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

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

Type部分是类型的名称 - 它不能由变量值(event)限定。如果你想在其他地方使用第一个表格,你可以导入DataLayoutEvent.Type

答案 2 :(得分:1)

我认为您需要以不同的方式引用Type

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