Неправильный синтаксис Java try-with-resources

Итак, я просматривал некоторые новые функции java 7, включая try-with-resources ] бит.

Я понимаю, как это работает, и все такое, я только заметил, что синтаксис, используемый для указания ресурсов, немного странный.

try 
    (InputStream fis = new FileInputStream(source);
        OutputStream fos = new FileOutputStream(target))
    {
            // stuff
        }
    }
    catch (Exception e) {
        // stuff
    }

В частности, определение ресурсов:

try (InputStream fis = new FileInputStream(source);
        OutputStream fos = new FileOutputStream(target))

Есть ли другое место в java, где разделение операторов внутри блока скобок допустимо?

Единственный другой раз, о котором я могу думать, - это цикл for

for ( ; ; )

, но это не совсем то же самое, поскольку должно быть ровно 2 ; s, и операторы разделяются , как в

for (int i = 1,  j = 100;  i <= 100, j > 0;  i = i-1, j = j-1)

Итак, мой вопрос: откуда взялся этот синтаксис? Есть ли причина, по которой операторы разделены ; вместо разделителей , ? Есть ли хотя бы другой сопоставимый язык, который имеет подобное использование разделенных операторов ; внутри блока () ? Я не могу вспомнить пример на java, C или python.

9
задан Falmarri 28 July 2011 в 12:35
поделиться