Почему Java может взять несколько параметров, но может возвратить только отдельный объект?

Почему Java был определен таким образом, что методы могут взять в качестве входа несколько параметров,
но может только возвратить отдельный объект (или пусто)?

Это делало язык так или иначе легче реализовать или использовать?

5
задан alain.janinm 29 April 2012 в 16:20
поделиться

4 ответа

Вероятно, потому что так это делают языки C и C++, а синтаксис языка Java очень похож на эти языки (и, возможно, основан на них).

На самом деле, согласно этой статье, Гослинг начал с расширения компилятора C++, поэтому вполне логично, что он будет следовать во многом тому же синтаксису:

Чтобы сделать разработку более нейтральным к платформе процессом (и таким образом удовлетворить спрос потребительского рынка на гибкость процессора), Гослинг начал с расширения компилятора C++.

5
ответ дан 18 December 2019 в 13:13
поделиться

Я не знаю наверняка, но полагаю, что Java выполняется так же, как и любая другая среда выполнения на основе стека. Это означает, что передача элементов в качестве параметров в метод выполняется легко, просто помещая их в стек перед передачей управления методу. Возвращаемые значения, вероятно, обрабатываются в виртуальной машине, как это делают C и C ++ - возвращаемое значение всегда помещается в регистр, который по своей природе является однозначным.

Это не большая проблема, потому что с помощью дженериков возврат нескольких значений может быть обработан безопасным для типов способом путем возврата экземпляра чего-то вроде Tuple , что в большинстве случаев это не слишком большая ноша.

4
ответ дан 18 December 2019 в 13:13
поделиться

Может быть, предполагалось, что несколько возвращаемых значений будут инкапсулированы в объект?

5
ответ дан 18 December 2019 в 13:13
поделиться

Я предполагаю, что это будет условием: это то, что делают / делают основные объектно-ориентированные языки, так что это то, что сделала Java. Однако официальный аргумент, вероятно, будет таким же, как и аргумент о закрытии - не включайте вещи, которые омрачают стандартный синтаксис для повседневных задач ненужными задачами. Или, может быть, они посчитали, что один метод должен возвращать набор связанных значений, которые должны / могут входить в объект. Или, может быть, они просто не думали об этом / у них было время (довольно стандартная плата за проезд для разработчиков).

В связи с этим я нашел обсуждение использования замыканий для имитации множественных возвратов: http://weblogs.java.net/blog/brucechapman/archive/2007/11/closures_and_mu. html

0
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: