2012-04-22 3 views
1

은 정의되지 않은 형식 매개 변수의 예와 제네릭 형식을 확장 열거 불가능 아닌가요 확장 않습니다왜 모든 열거 형은 <e>

class Foo extends enum<E> 

그들이 그것을 어떻게 확장 할 수 있습니까?

편집 : values ​​() 메소드는 어디에 정의되어 있습니까? 그것은 참으로 불법 사전

+2

은 어디에서 구할 수 있습니까? 'Foo'는'Enum '을 확장해야합니다. – bdonlan

+0

열거 형을 사용하여 열거 형을 생성 할 때 전자를 암시 적으로 정의합니까? – rubixibuc

+2

다음은 java.lang.Enum의 소스 코드입니다. http://www.docjar.com/html/api/java/lang/Enum.java.html – Thilo

답변

5

덕분에 정의되지 않은 형식 매개 변수와 함께 제네릭 형식을 확장합니다. 그러나 enum은 그렇게하지 않습니다. 일부 자바 코드를 디 컴파일하고 <E>이있는 경우 (열거 형의 이름이 E이 아닌 경우) 디 컴파일러가 제네릭을 제대로 처리하지 못합니다.

열거 형은 암시 적으로 Enum<YourEnumType>까지 확장됩니다. 즉, 암시 적으로 컴파일러는 class YourEnumType extends Enum<YourEnumType>을 생성합니다. 자체 유형을 전달하면 EnumcompareTovalueOf 함수가 다른 유형의 enum에서 값을 거부 할 수 있습니다.

+0

enum generic에없는 경우 values ​​() 메서드는 어디에 정의됩니까? – rubixibuc

+0

물론 생성 된 클래스에서. – bdonlan

+0

그래서 인공적인 방식으로 말하고 있습니까? – rubixibuc

관련 문제