Правильно ли я понимаю, что вы хотите иметь 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 будет в карте.