2011-09-02 105 views
2

我遇到过这个问题的大多数人都在使用=,他们需要==。这里导致我的问题是什么?比较枚举值时出现“意外类型”错误

 
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()); 
    } 

    ... 

回答

4

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

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

你可以(但不应)使用静态成员(方法和字段)实例的访问,而不是内部的类型。

+0

嗯,我想我所用的非静态的快捷方式之前成功。也许这只适用于静态字段,而不是嵌套类和枚举。 –

+0

@bemace正好。 –

3

它应该仅仅是:

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

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

Type零件是一个类型的名称 - 它不能用变量值(event)限定。顺便说一下,如果您想使用别处的第一个表单,则可以导入DataLayoutEvent.Type

1

我认为你需要参考Type不同:

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