Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么java方法不支持多个返回值?_Java_Oop_Methods_Return Value_Design Principles - Fatal编程技术网

为什么java方法不支持多个返回值?

为什么java方法不支持多个返回值?,java,oop,methods,return-value,design-principles,Java,Oop,Methods,Return Value,Design Principles,在使用Java应用程序时,我经常会遇到一个问题:为什么Java不支持方法的多个返回值? 我知道设计Java的人一定已经考虑过这个主题,但我自己思考时没有得到任何答案或特定原因。如果所有值都是相同类型的,您可以返回它们的数组: public String[] myMethod{} {} 如果不是,则有多个选项: 丑陋的方法是将所有东西都投射到一个对象中,然后返回: public Object[] myMethod{} {} 或 并返回MyResponse的实例。注意,这里我公开了属性。围绕这一

在使用Java应用程序时,我经常会遇到一个问题:为什么Java不支持方法的多个返回值?


我知道设计Java的人一定已经考虑过这个主题,但我自己思考时没有得到任何答案或特定原因。

如果所有值都是相同类型的,您可以返回它们的数组:

public String[] myMethod{} {}
如果不是,则有多个选项:

丑陋的方法是将所有东西都投射到一个对象中,然后返回:

public Object[] myMethod{} {}


并返回
MyResponse
的实例。注意,这里我公开了属性。围绕这一点,有多种思想流派。有些人更喜欢将它们设置为私有,并添加getter/setter方法。这是您的家庭作业。

从概念上讲,Java方法应该只对数据执行一个操作并返回具体结果。如果您不能决定应该返回什么方法,这将导致类的OOP设计不好


如果您只想从方法中返回多个对象(一种类型的对象),您应该使用集合或数组,如@mprivat所说。

可能是集合是用来填补空白的思想。:)边注:考虑清楚你是否感兴趣这是为什么在java中完成的或者如何返回多个值(答案是迄今为止提供的)。@ Alexei Levenkov:对<代码>感兴趣。为什么 + 0:好信息,但是现在与问题没有直接关系——显示如何在单个结果中返回多个项目,而不是“为什么是单一结果”。还可以考虑提供“为什么单返回值”部分答案。也许“为什么不
out
/
ref
的结果与C++”类似?我想说的是,“是的,它确实返回了多个值”。可能不像Haskell、Lisp甚至Python那样优雅,但确实如此。因此,我认为这个问题没有实际意义。
public List<? extends Object> myMethod() {}
public class MyResponse {
    public String myString;
    public int myInt;
}