2012-07-05 3 views
0

질문이 있습니다. Enum과 다른 객체를 사용하여 여러 정적 클래스에 대해 Enum 유형을 정의 할 수 있습니까?여러 클래스의 추상 클래스 메소드 인자 Enum <E>을 정의하십시오.

예 :

public abstract class AbstractClass 
{ 
    public Enum<?> AbstractMethod(); 
} 

public class StaticClass extends AbstractClass 
{ 
    public enum en 
    { 
     FOO3, 
     FOO4 
    } 

    @Override 
    public Enum<en>[] AbstractMethod() 
    { 
     return en.values(); 
    } 
} 

public class StaticClass2 extends AbstractClass 
{ 

    public enum en 
    { 
     FOO1, 
     FOO2 
    } 

    @Override 
    public Enum<en>[] AbstractMethod() 
    { 
     return en.values(); 
    } 
} 

하지만 그 코드는 오류가 발생합니다 : 방법을 public boolean AbstractMethod(Enum<ObjectX> en1) dosn't exsist AbstractClass 작동하지만 RawTypes를 throw 이렇게

(X는 개체의 수입니다)에서 경고 :

public abstract class AbstractClass 
{ 
    public Enum[] AbstractMethod(); 
} 

public class StaticClass extends AbstractClass 
{ 
    public enum en 
    { 
     FOO3, 
     FOO4 
    } 

    @Override 
    public Enum[] AbstractMethod() 
    { 
     return en.values(); 
    } 
} 

public class StaticClass2 extends AbstractClass 
{ 

    public enum en 
    { 
     FOO1, 
     FOO2 
    } 

    @Override 
    public Enum[] AbstractMethod() 
    { 
     return en.values(); 
    } 
} 
+1

거의 시간이 나는 내가 무엇을 찾고 찾을 수없는, 내가 시간이 없어 각 코드를 테스트하고 작동하면 투표를하십시오. –

+0

[이 답변은 잘 작동하는 것 같았습니다] (http://stackoverflow.com/a/8573135/451590). –

+4

어떤 답변이 도움이되었는지 알아낼 시간이 없지만 Google에서 시간을내어 도움을받을 것으로 기대하십니까? –

답변

1

이게 무슨 뜻이야?

열거 :

public enum Fruits { 
    APPLE, ORANGE; 
} 

클래스 :

public static abstract class Parent { 

    public abstract <E extends Enum<?>> void printEnum(final E e); 

} 

public static class Child extends Parent { 

    @Override 
    public <E extends Enum<?>> void printEnum(final E e) { 
     System.out.println(e.name()); 
    } 

} 

사용법 :

new Child().printEnum(Fruits.ORANGE); // Prints ORANGE 
+0

나는 열거 형, 예를 들어 여러 개체에 의해 사용 될 수있는 추상 클래스에서 열거를 정의 의미) {...}'정적 클래스에서는 Enum을 추상 클래스에서 오버라이드하고 다른 클래스에서는 다른 enum 객체와 동일하게 오버라이드합니다. (나는 첫 번째 게시물을 바꿀 것이다). –

관련 문제