문제

확장 할 수있는 열거를 작성하는 방법이 있습니까? 나는 항상 열거에 사용할 수있는 몇 가지 방법이 있습니다. 예를 들어 데이터베이스 필드에 열거를 사용합니다. 데이터베이스에 실제 필드 이름이 포함되어 있습니다.

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 :

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570766

자바 프리 자바로의 후퇴는 5 일을 보려면 항목 21, 5 장, Josh Bloch의 효과적인 Java. 그는 값을 추가하여 "열거"확장에 대해 이야기하지만 아마도 일부 기술을 사용하여 새로운 방법을 추가 할 수 있습니까?

조쉬 블로치의 효과적인 자바에 정의 된 것과 유사한 메커니즘으로 열거를 제작합니다.

나는 당신이 열거를 "확장"해야한다면, 아마도 열거가 당신이 따르는 구조가 아니라고 덧붙였다. 그것들은 정적 상수 IMHO입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top