2012-01-06 73 views
2

假設你有一個枚舉單:實例化和使用枚舉單

public enum Elvis { 
    INSTANCE; 

    private int age; 

    private Elvis() { age = 42; } 

    public int getAge() { return age; } 

    public void leaveTheBuilding() { System.out.println("I'm outta here."); } 
} 

問題:你怎麼那麼使用它?是這樣的:

int a = Elvis.INSTANCE.getAge(); 
Elvis.INSTANCE.leaveTheBuilding(); 
// and so on, using Elvis.INSTANCE 

還是最好實例是「明確的」,然後使用該實例,就像這樣:

Elvis elvis = Elvis.INSTANCE; 
int a = elvis.getAge(); 
elvis.leaveTheBuilding(); 
// and so on, using elvis 

我很想使用後者,以避免在難看的.INSTANCE無處不在。但是有沒有這樣做的缺點? (除了實例化的一行額外代碼)。

回答

4

這沒關係。一個使用局部變量,另一個不使用。使用你發現最具可讀性的東西。

2

在我看來,你可以更好地在這種情況下,使用一個靜態類:

public class Elvis { 
    private static int age = 42; 

    private Elvis() {} 

    public static int getAge() { return age; } 

    public static void leaveTheBuilding() { 
    System.out.println("I'm outta here."); 
    } 
} 

然後執行:

int a = Elvis.getAge(); 
Elvis.leaveTheBuilding(); 
// etc.