Почему мы должны использовать промежуточную переменную для @SuppressWarnings("unchecked")?

Добрый день всем,

Хотел спросить, в чем причина того, что

public class test<T> {
    T[] backing_array;

    public void a(int initial_capacity) {
        @SuppressWarnings("unchecked")
        T[] backing_array = (T[]) new Object[initial_capacity];
        this.backing_array = backing_array;
    }
}

валидно, но

public class test<T> {
    T[] backing_array;

    public void b(int initial_capacity) {
        @SuppressWarnings("unchecked")
        this.backing_array = (T[]) new Object[initial_capacity];
    }
}

ошибка синтаксиса/компилятора?

В чем причина того, что для @SuppressWarnings("unchecked") нужно использовать промежуточную переменную?

6
задан Pacerier 31 January 2012 в 07:47
поделиться