LINUX.ORG.RU
Ответ на: комментарий от Legioner

public enum Attr{
  id(true);

  private req;
  Attr(){
    req = false;
  }
  Attr(boolean isreq){
    req = isreq;
  }
  boolean isRequired(){
    return req;
  }
}

public enum SomeAttr extends Attr{
  name(true),
  parent;
}

Примерно так, можно конечно тупо написать класс в который компилятор развораичивает enum. 

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

Вообще я был на недавном выступлении Блоха - он там говорил что это error-prone way (есть ряд причин) =) если уж так надо - то конструкция на классах а не на енамах не будет принципиально хуже.

theos ★★★
()
Ответ на: комментарий от nikolayd

епт, я аннотации никогда не рисовал.

wfrr ★★☆
() автор топика

паренек,иди лучше пыво пей да девок клей, а вот когда стоять перестанет тогда и будешь всякой **ней заниматьсо.

anonymous
()
Ответ на: комментарий от wfrr

Ну, определяя enum ты можешь быть уверен, что если ты в методе просишь аргумент этого типа, то ничего, кроме перечисленных значений на вход не прилетит. Если же можно будет наследоваться, такой уверенности не будет. Если код изначально пишется со знанием этого, то проблем не будет. Но могут быть проблемы со старым кодом. Простейший пример:

public enum Something{EL1,EL2};
...
public void foo(Something smth)
{
...
if(smth == Something.EL1)
...
else
...
}
Если есть наследование, надо будет дописать else if(smth == Something.EL2) и ещё потом просто else.

Score-49
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.