2012-01-06 2 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. 
Смежные вопросы