Доброго времени суток.
В методе equals не работает приведение типов. В чем проблема?
class Pair
Ответ
Вообще то, конструкция вида
Pair
не является корректной, т.к. в райнтайме дженерики стираются. Вместо U, T у полей будет тип Object. Естественно компилятор пытается предупредить вас о возможной ошибке. Но вы можете проверить, является ли данный объект типом Pair, а затем проверить каждое поле на равенство либо, сопоставимость типов:
@Override
public boolean equals(Object other) {
if (other == null)
return false;
if (this == other)
return true;
if (!(other instanceof Pair))
return false;
Pair obj = (Pair) other;
if (Objects.equals(obj.first, this.first) && Objects.equals(obj.second, this.second))
return true;
return false;
}
Но если вы точно знаете и совершенно уверены в том, что делаете то аннотация @SuppressWarnings("unchecked") для вас. Она избавляет от этих назойливых предупреждений во время компиляции.
Комментариев нет:
Отправить комментарий