@SuppressWarnings("unchecked")
применяется к объему декларации и уступки сразу после нее.Он может быть назначен области действия функций или назначению конкретной переменной.
В вашем первом примере он применяется к локальной переменной.Во втором примере вы пытаетесь применить его к присвоению поля, которое уже было объявлено.
Обратите внимание, что это также не компилируется:
public class Test<T> {
public void a(int initial_capacity) {
T[] backing_array;
@SuppressWarnings("unchecked")
backing_array = (T[]) new Object[initial_capacity];
}
}
, и это имеетне влияет на предупреждения:
public class Test<T> {
public void a(int initial_capacity) {
@SuppressWarnings("unchecked")
T[] backing_array;
backing_array = (T[]) new Object[initial_capacity];
}
}
Короче говоря, SuppressWarnings нельзя применять к переменным во всей области видимости.Он применяется к присваиванию + объявлению (для переменных) или ко всей области действия метода при применении к методу.