2016-06-15 3 views
1

enum을 반환하는 abstract에서 메서드를 확장하는 것과 관련하여 문제가 있습니다.열거 형을 확장하여 Java의 재정의 된 메서드에서 사용하십시오.

이하 확장해야 할 com.fasterxml.jackson 라이브러리의 추상 클래스 아래.

public abstract class JsonSchema 
{ 
    public abstract JsonFormatTypes getType(); 
} 

그리고 JsonFormatTypes는 열거입니다 :

public class SwitchSchema extends JsonSchema 
{ 
    @Override 
    public JsonFormatTypes getType(){ 
     return JsonFormatTypes.SWITCH; 
    } 
} 

지금 내 질문에 확장하는 방법입니다

public enum JsonFormatTypes 
{ 
    STRING, 
    NUMBER, 
    INTEGER, 
    BOOLEAN, 
    OBJECT, 
    ARRAY, 
    NULL, 
    ANY; 
} 

가 지금은 "스위치"로 유형을 가지고 SwitchSchema 및 JsonFormatTypes에 대한 JsonSchema 제공자 라이선스 계약을 연장하려면 JsonFormatTypes 열거 형 메서드에서 "SWITCH"열거 형을 사용하도록 열거합니까?

+0

열거 형을 확장 할 수는 없지만 클래스를 확장 할 수는 있습니다. 열거 형을 클래스로 변환하지 않으시겠습니까? – Leo

답변

4

enum은 확장 할 수 없습니다. docs에서

는 :

모든 열거 암시 java.lang.Enum을 확장합니다. 클래스는 하나의 부모 만 확장 할 수 있기 때문에 (Declaring Classes 참조) Java 언어는 다중 상속 상태 (Multiple Inheritance of State, Implementation, and Type 참조)를 지원하지 않으므로 enum은 다른 어떤 것도 확장 할 수 없습니다. 일부 온라인 문학에도 불구하고

(예 here)는 switch 문이 현재 JSON을 지원하지 않습니다, 그대로 따라서 JsonFormatTypes (Jackson에서, 내 생각) 좋은, 당신은 아마 어떤을 사용하지 않으 다르게.

JSON 형식에 대한 새로운 사양을 만들려고한다면 타사에 의존하는 대신 자신의 파서를 사용하는 것이 좋습니다.

관련 문제