Я хотел бы разрешить это предупреждение компилятора:
unchecked call to compareTo(T) as member of the raw type java.lang.Comparable
Моя цель - сравнить два java.lang.Object
объекта неизвестного (фонового) типа, используя следующий метод.
public static boolean Compare(Object o1, Object o2) {
//check if both classes are the same
if(!o1.getClass().equals(o2.getClass())) {
return false;
}
if(Comparable.class.isAssignableFrom(o1.getClass())
&& Comparable.class.isAssignableFrom(o2.getClass())) {
//only if both objects implement comparable
return Comparable.class.cast(o1).compareTo(Comparable.class.cast(o2)) == 0;
}
//other comparison techniques...
}
Я знаю, что проблема в том, что метод приводит оба объекта к Comparable
(Comparable<Object>
), но Object
не реализует Comparable
.
Сам код работает ,но компилятор выдает предупреждение при использовании его параметра -Xlint: unchecked.
Цели:
- удалить предупреждение компилятора
- keep outдругих «непроверенных» предупреждений
- избегая использования @ SupressWarning
- keep метод сравнения не универсальный