Chcę utworzyć mapę komparatorów w następujący sposób, ta mapa będzie używana do zapewnienia komparatora dla każdego rodzaju klasy.Jak używać generycznych w mapie Komparatora, aby uniknąć ostrzeżeń
Jak mogę zamienić rodzajowy? w deklaracji mojej mapy, aby mieć pewność, że zawsze mam ten sam typ Klasy w kluczu i wartości mojej mapy (komparatory)?
Chcę również, aby zmniejszyć liczbę ostrzeżeń
private static final Map<Class<?>, Comparator<?>> comparators = new HashMap<>();
static {
comparators.put(Identifiable.class, new Comparator<Identifiable>() {
@Override
public int compare(Identifiable o1, Identifiable o2) {
return o1.getId().compareTo(o2.getId());
}
});
comparators.put(MyClass.class, new Comparator<MyClass>() {
@Override
public int compare(EIntersection o1, EIntersection o2) {
return o1.getRef().compareTo(o2.getRef());
}
});
...
}
Dlaczego nie wystarczy użyć prostej klasy bez leków generycznych? Rozumiem, że otrzymasz ostrzeżenie od kompilatora. Możesz użyć adnotacji '@SuppressWarning (" niezaznaczone ")', aby zignorować to ostrzeżenie. – SMA
rozważ, że możesz użyć @SuppressWarning ("niezaznaczone") przed nazwą metody. – marco
Dlaczego nie chcesz, aby każda klasa implementowała Komparator? –