Mam następujący kod:
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"
// [...]
}
}
Jak uniknąć zarówno „A to surowy typ”, jak i „Bezpieczeństwo typu: niesprawdzone rzutowanie” w określonej linii? Czy jest jakiś hack lub robię coś nie tak z moimi zajęciami?
Dzięki
3 odpowiedzi
Jeśli sparametryzowany typ porównywanego A
nie ma znaczenia, zadeklaruj i rzuć go jako A<?>
:
A<?> other = (A<?>) obj;
Spowoduje to usunięcie ostrzeżenia.
Umieść tę adnotację przed nią: @SuppressWarnings("unchecked")
. Więcej informacji znajdziesz tutaj.
W razie potrzeby możesz użyć adnotacji @SuppressWarnings
. Zobacz tutaj.
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].