2014-12-06 3 views
4

추상 메서드에서 일반 EnumMap을 매개 변수로 사용하려고했습니다. 내 문제는 EnumMap에 대한 기존 열거 형을 사용하여 추상 메서드를 구현할 때 컴파일러에서 Override Annotation을 제거하고 super 메서드를 구현해야한다는 것입니다. 여기추상 메서드에서 매개 변수로 일반 EnumMap을 사용하는 방법

내 추상 클래스입니다 :



    import java.util.EnumMap; 
    import java.util.HashMap; 

    public abstract class AbstractClazz { 

     // The methode I tried to define 
     public abstract <K extends Enum<K>> boolean isVisible(EnumMap<K, Object> visibleConditions); 

     // second test 
     public abstract <K> boolean isVisible2(HashMap<K, Object> visibleConditions); 

     // third test 
     public abstract boolean isVisible3(EnumMap<?, Object> visibleConditions); 
    } 

그리고 구현 클래스 :



    import java.util.EnumMap; 
    import java.util.HashMap; 

    public class Clazz extends AbstractClazz { 

     public enum Numbers { 
      ONE, TWO, THREE 
     } 

     // Error: The method isVisible(EnumMap<Clazz.Numbers,Object>) of type Clazz must override or implement a supertype method 
     @Override 
     public boolean isVisible(EnumMap<Numbers, Object> visibleConditions) { 
      return false; 
     } 

     // Error: The method isVisible2(HashMap<Clazz.Numbers,Object>) of type Clazz must override or implement a supertype method 
     @Override 
     public boolean isVisible2(HashMap<Numbers, Object> visibleConditions) { 
      return false; 
     } 

     // Error: The method isVisible3(EnumMap<Numnbers,Object>) of type Clazz must override or implement a supertype method 
     @Override 
     public boolean isVisible3(EnumMap<Numnbers, Object> visibleConditions) { 
      return false; 
     } 
    } 

어쩌면 스피 너무 바보지만, 내가 무슨 일을하고 있는가?

아무도 도와 줄 수 있습니까?

+0

원시 형식으로 EnumMap's. 유형 매개 변수와 함께 올바르게 사용하십시오. –

답변

1

귀하의 방법뿐만 아니라 수업을 입력해야합니다.

import java.util.EnumMap; 
import java.util.HashMap; 

public abstract class AbstractClazz<K extends Enum<K>> { 

    public abstract boolean isVisible(EnumMap<K, Object> visibleConditions); 
} 

을 그리고 :이 시도

import java.util.EnumMap; 

public class Clazz extends AbstractClazz<Numbers> { 

    @Override 
    public boolean isVisible(EnumMap<Numbers, Object> visibleConditions) { 
     return false; 
    } 
} 

편집 : 그것이 작동되도록하려면 자신의 파일에 숫자 열거를 넣어 : 나는`사용하여 많은 이득이 아니라고 생각

public enum Numbers { 
    ONE, TWO, THREE 
} 
+0

그러나 입력 방법이 왜 작동하지 않아야합니까? –

+0

그러면 서브 클래스에도 똑같은 서명이 필요합니다. 수퍼 클래스에서 메소드를 구현하면 매개 변수를 제한 할 수 없습니다. –

+0

정말로 빠른 답변을 해주셔서 감사합니다. 하지만 지금은 컴파일러가 클래스 정의에서 클래스 번호를 해결할 수 없다는 문제점이 있습니다. – Dackelkotze

관련 문제