Я не могу сказать , почему Джеймс Гослинг и др. Выбрали именно эту альтернативу ...
Однако использование круглых скобок вместо фигурных скобок создаст серьезную проблему неоднозначности для грамматики Java. Рассмотрим следующий пример:
Object[] tableHeaders = ("Cars");
Обозначают ли круглые скобки конструктор массива или они являются частью синтаксиса выражения нормального выражения?
Теперь можно было бы придумать некоторые сложные правила предшествования, чтобы покрыть это, но это усложняет жизнь как программистам, так и авторам компиляторов.
(На грамматическом уровне парсер Java должен иметь дело с неоднозначностью в:
VariableInitializer:
ArrayInitializer
Expression
В приведенном выше примере ("Cars")
совпадает с продукцией ArrayInitializer и Expression ... если вы используете круглые скобки для инициализаторов массива. Чтобы решить, какое значение является правильным, потребуется посмотреть на объявленный тип переменной ... с последующим контекстно-зависимым анализом VariableInitializer. Насти.)
Я бы сказал, что они сделали правильный выбор, не используя круглые скобки для инициализаторов массива.
Квадратные скобки тоже не подойдут. Вы можете попытаться объяснить это ...
... = new Object[]["Cars"]; // 1-D array
против
... = new Object[21][]; // 2-D array
против
... = new Object[][]; // is that 1-D or 2-D?