2012-11-16 7 views
10

Я использую статическое перечисление в интерфейсе и хочу использовать его в расширяющемся классе.Использовать значение Enum без использования Enum-classname

У меня есть следующие интерфейсы:

public interface StateSupport { 
    public static enum State { 
     NEW, 
     UNCHANGED, 
     UPDATED; 
    } 
} 

и

public interface Support extends StateSupport { 
    public void do(Context arg0); 
} 

и, наконец, класс

public class MyClassUtil implements Support { 
    public void do(Context arg0){ 
     MyClass obj = new MyClass(NEW); 
    } 

}

Дело в том, что я не хочу писать " State.NEW ", просто" N EW ":-)

Как он может это сделать, не используя имя перечисления. Есть ли вообще способ?

+0

тьфу, почему вы хотите, чтобы выйти из своего пути, чтобы сделать код менее читаемым? – Qwerky

+0

Считываемость находится в глазу читателя. Я для одного предпочитаю статический импорт, когда они достаточно очевидны (довольно часто, то есть). –

ответ

18

Вы можете использовать статический импорт:

import static com.yourpackage.StateSupport.State.NEW; 
import static com.yourpackage.StateSupport.State.UNCHANGED; 
import static com.yourpackage.StateSupport.State.UPDATED; 

или сокращенно (обескураженный):

import static com.yourpackage.StateSupport.State.*; 
+1

чистый, ясный ответ +1. – Juvanis

+3

'com.yourpackage.StateSupport.State. *' Работает тоже. – assylias

+0

@assylias да, но некоторые показатели говорят об этом как о плохой практике. – Kai

Смежные вопросы