2011-09-02 100 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) { ... }