объявление переменной внутри цикла for без фигурных скобок вызывает ошибку

Я учил, что фигурные скобки в цикле for необходимы только тогда, когда у вас есть более одного оператора. У меня есть следующий код

public static void someMethod(int[] arr)
{
    for (int i = 0;i < arr.length;i++)
        int t = arr[i]; // this gives an error
}

Приведенный выше код в eclipse дает ошибку, говорящую, что левая часть оператора присваивания должна быть переменной. В netbeans там написано, что объявление переменной не разрешено. Но я не знаю почему. Когда я добавляю фигурные скобки, я не получаю ошибку. То есть следующий код работает хорошо.

public static void anotherMethod(int[] arr)
{
    for (int i = 0;i < arr.length;i++)
    {
        int t = arr[i]; // this works well
    }
}

ПРИМЕЧАНИЕ. Логика моего кода не имеет значения. Я имею в виду, что одно только утверждение бесполезно, но я только что заметил эту ошибку, пока писал свой код.


person ivange    schedule 11.01.2016    source источник
comment
Вы получаете сообщение об ошибке, потому что JLS говорит, что это недопустимо. Вы знаете, что такой код был бы бесполезен и, скорее всего, указывал бы на ошибку, поэтому вы должны быть счастливы, что компилятор предупредил вас об этом.   -  person JB Nizet    schedule 11.01.2016
comment
это поведение правильно, ваши предположения неверны, и никогда не оставляйте фигурные скобки по какой-либо причине, это ужасно, что это даже разрешено   -  person    schedule 11.01.2016
comment
я знаю, что код бесполезен, поэтому я добавил примечание. Я не читал спецификацию Java, но во всех книгах говорится, что фигурные скобки нужны только тогда, когда у вас есть более одного оператора. Бесполезность кода должна быть моей проблемой, а не компилятора.   -  person ivange    schedule 11.01.2016
comment
Да, но книги не такие точные и привередливые, как JLS. Они делают приближения, чтобы читатель-новичок понял общее правило.   -  person JB Nizet    schedule 11.01.2016