Избегайте предупреждений при реализации равных в классе с обобщениями - PullRequest
3 голосов
/ 24 августа 2011

У меня есть следующий код:

public abstract class A<T extends B<? extends A<T>>>{

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        A other = (A) obj; // warning here: "A is a raw type"
        // [...]
    }
}

Как избежать как "A является необработанным типом", так и "Тип безопасности: непроверенное приведение" в указанной строке?Есть какой-то хак или я делаю что-то не так с моими уроками?

Спасибо

Ответы [ 3 ]

6 голосов
/ 24 августа 2011

Если параметризованный тип сравниваемого A не имеет значения, объявите и приведите его как A<?>:

A<?> other = (A<?>) obj;

Это удалит предупреждение.

2 голосов
/ 24 августа 2011

Поместите эту аннотацию перед ней: @SuppressWarnings("unchecked").См. здесь для получения дополнительной информации.

0 голосов
/ 24 августа 2011

При необходимости вы можете использовать аннотацию @SuppressWarnings.См. здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...