Как проверить общий enum в Java? - PullRequest
0 голосов
/ 21 марта 2019

Вот мой код:

public enum DecisionType {

REFUSAL,
GRANT_OF_PROTECTION,
PARTIAL_REFUSAL;
}

public class DocumentComposition<T extends Enum<DecisionType>> extends TreeMap<DocumentType, Object> {

@Override
public Object put(DocumentType key, Object value) {
    if (key.getDecisionType() != ) {
        return null;
    }
    return value;
}
}

DocumentComposition map = new DocumentComposition<DecisionType.REFUSAL>();

Мне нужно, чтобы моя Карта содержала только элементы, имеющие определенное значение перечисления DecisionType.Как мне этого добиться?Как должен выглядеть мой тест?

1 Ответ

1 голос
/ 21 марта 2019

Правильно ли я понимаю, что вы хотите иметь DocumentComposition, которое принимает только экземпляры DocumentType определенного DecisionType?Мои части решения:

  • Вам не нужно использовать для этого дженерики, а скорее внутреннюю переменную, которую вы предоставляете в конструкторе.
  • В переопределенных параметрахметод, который вы не должны забывать вызывать супер, иначе ваш TreeMap никогда не получит никаких элементов.

    public class DocumentComposition extends TreeMap<DocumentType, Object> {
    
        private DecisionType acceptedDecisionType;
    
        public DocumentComposition(DecisionType acceptedDecisionType)
        {
            this.acceptedDecisionType = acceptedDecisionType;
        }
    
        @Override
        public Object put(DocumentType key, Object value) {
            if (key.getDecisionType() != acceptedDecisionType) {
                return null;
            }
            return super.put(key, value); // do not forget to call super, otherwise your TreeMap is not filled
        }
    }
    

Теперь вы можете использовать свою карту:

    public static void main( String args[])
    {
        DocumentComposition dc=new DocumentComposition(DecisionType.REFUSAL);
        dc.put(new DocumentType(DecisionType.REFUSAL), "refusalDoc");
        dc.put(new DocumentType(DecisionType.PARTIAL_REFUSAL), "partialRefusalDoc");
        System.out.println(dc);
    }

ТолькоОтказDoc будет в карте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...