为什么java方法不支持多个返回值?
在使用Java应用程序时,我经常会遇到一个问题:为什么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的人一定已经考虑过这个主题,但我自己思考时没有得到任何答案或特定原因。如果所有值都是相同类型的,您可以返回它们的数组:
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;
}