Единственный способ удалить предупреждение - это изменить код BeanComparator, но даже если бы вы могли, если бы вы не сделали это специальной оболочкой, которая понимает ваш конкретный тип, концепция не сработает. Класс воздействует на любой объект посредством отражения, которое может иметь или не иметь метод. По своей природе он не безопасен.
Самый простой способ обойти это предупреждение - создать собственный компаратор:
public class QuestionComparator extends Comparator<Question> {
private BeanComparator peer = new BeanComparator("questionId");
public int compare(Question o1, Question o2) {
return peer.compare(o1, o2);
}
}
Вы также можете реализовать equals, если это имеет значение, и вызвать метод equals BeanComparator следующим образом:
public boolean equals(Object o) {
//boiler plate code here to ensure o is an instance of Question and not null
return ((QuestionComparator) o).peer.equals(peer);
}