저만 생각하는게 아니었군요. AbstractEnum

2009. 10. 27. 13:18Java

저만 생각하는게 아니었군요. AbstractEnum

항상 Enum을 쓰면서, 상속좀 가능하게 하면, 더 사용성이
올라간다고 생각했습니다.

현재 자바의 속성상 다중상속은 되지 않습니다.
(java.lang.Object를 제외하고 말이죠)

현재 Enum클래스는  java.lang.Enum을 묵시적으로 상속받고 있습니다.

따라서 다중상속을 할수없는 자바 Spec이니
역시 우리가 구현한 Enum클래스 역시 상속을 할수 없습니다.


아래에서도 제안을 많이 하고 있네요.
한번씩 보시는 것도 좋겠습니다.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570766

다만, 기존구조에 문제를 끼치지 않는 범위내에서
허용했으면 좋겠습니다.

=> 허용하는 방식 (물론 현재 안됩니다.)
public abstract enum AbstractColumn {
   String columnName;
   int precision;
    AbstractColumn() {
       columnName = name();
       precision = 0;
   }
  AbstractColumn(String c, int p) {
   ....
   }
   public String getColumnName() {return columnName();}
}

=> 요렇게 상속을..

public enum CustomerColumn extends AbstractColumn {
  firstName, lastName, age;
   public String getColumnName() {
      return StringUtils.capitalizeWithUnderscore(name());
   }
}

@Entity
public class Customer {
  @Column(definition = CustomerColumn.firstName)
  private String firstName;
}