Java 확장 가능한 열거
-
03-07-2019 - |
문제
확장 할 수있는 열거를 작성하는 방법이 있습니까? 나는 항상 열거에 사용할 수있는 몇 가지 방법이 있습니다. 예를 들어 데이터베이스 필드에 열거를 사용합니다. 데이터베이스에 실제 필드 이름이 포함되어 있습니다.
public enum ORDERFIELDS
{
OrderID("Order_ID");
private String FieldName;
private ORDERFIELDS(String fname)
{
this.FieldName = fname;
}
public String getFieldName()
{
return FieldName;
}
}
해결책
내가 올바르게 이해한다면, 당신이하고 싶은 것은 다음과 같습니다.
public abstract class DatabaseField {
private String fieldName;
private DatabaseField(String fieldName) {
this.fieldName = fieldName;
}
public String getFieldName() {
return fieldName;
}
}
그런 다음 열거를 정의 하여이 클래스를 연장하십시오. 그러나 불행히도 열거는 클래스를 연장 할 수는 없지만 인터페이스를 구현할 수 있으므로 현재 할 수있는 최선의 방법은 getfieldName () 메소드를 포함하는 인터페이스를 정의하고 모든 열거 가이 인터페이스를 구현하도록하는 것입니다.
그러나 이것은 모든 열거 에서이 방법 (및 다른 방법)의 구현을 복제해야한다는 것을 의미합니다. 몇 가지 제안이 있습니다 이 질문 이 복제를 최소화하는 방법에 대해.
다른 팁
모든 열거는 암시 적으로 확장됩니다 java.lang.Enum
. Java는 다중 상속을 지원하지 않기 때문에 열거는 다른 것을 확장 할 수 없습니다.
열거는 인터페이스를 구현할 수 있지만 컴파일 된 경우 java.lang.enum으로 번역됩니다.
초록 열거는 잠재적으로 매우 유용합니다 (현재 허용되지 않음). 그러나 제안과 프로토 타입은 햇볕에 누군가 로비를 추가하기 위해 다음을 추가하려면 존재합니다.
http://freddy33.blogspot.com/2007/11/abstract-enum-ricky-carlson-way.html
Sun Rfe :
자바 프리 자바로의 후퇴는 5 일을 보려면 항목 21, 5 장, Josh Bloch의 효과적인 Java. 그는 값을 추가하여 "열거"확장에 대해 이야기하지만 아마도 일부 기술을 사용하여 새로운 방법을 추가 할 수 있습니까?
조쉬 블로치의 효과적인 자바에 정의 된 것과 유사한 메커니즘으로 열거를 제작합니다.
나는 당신이 열거를 "확장"해야한다면, 아마도 열거가 당신이 따르는 구조가 아니라고 덧붙였다. 그것들은 정적 상수 IMHO입니다.