为什么Java可以采用多个参数但只能返回一个对象?

时间:2010-03-11 17:51:21

标签: java history language-design

为什么java被定义为方法可以将多个参数作为输入,
但可能只返回一个对象(或无效)?

它是否使语言更容易实现或使用?

4 个答案:

答案 0 :(得分:5)

可能意图是将多个返回值封装在一个对象中?

答案 1 :(得分:5)

可能是因为这是C和C ++这样做的方式,而Java语言语法与这些语言非常相似(并且可能基于这些语言)。

事实上,根据this article,Gosling从扩展C ++编译器开始,所以他会遵循大部分相同的语法是有道理的:

  

为了使开发成为一个更加平台中立的过程(从而适应消费者市场对CPU灵活性的需求),Gosling首先扩展了C ++编译器。

答案 2 :(得分:4)

我不确定,但我认为Java的执行方式与任何其他基于堆栈的运行时一样。这意味着在将控制转移到方法之前,只需将项目作为参数传递到方法中,只需将它们推入堆栈即可。返回值可能在VM中像C和C ++那样处理 - 返回值总是放在寄存器中,寄存器本质上是单值的。

这不是一个大问题,因为使用泛型,返回多个值可以通过返回类似Tuple<type1, type2, type3>之类的实例以类型安全的方式处理,这不是一个很大的负担在大多数情况下。

答案 3 :(得分:0)

我的猜测是惯例:这就是主要的OO语言做/做的事情,所以这就是Java所做的。然而,官方的论点可能与关于闭包的论点相同 - 不包括会使用非实际需要的任务完成普通任务的标准语法的东西。或者他们可能认为单个方法应该返回一组应该/可以进入对象的相关值。或许他们只是没想到/有时间(相当标准的开发者票价)。

在相关的说明中,我发现了使用闭包来模拟多个返回的讨论: http://weblogs.java.net/blog/brucechapman/archive/2007/11/closures_and_mu.html