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

时间:2014-05-23 06:26:03

标签: java oop methods return-value design-principles

在使用Java应用程序时,我觉得大多数时候都有一个问题:为什么Java不支持方法的多个返回值?

我知道设计Java的人必须考虑过这个话题,但在思考自己的时候,我没有得到任何答案或特别的理由。

2 个答案:

答案 0 :(得分:1)

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

public String[] myMethod{} {}

如果不是,他们有多种选择:

丑陋的是将所有内容都转换为Object并返回:

public Object[] myMethod{} {}

public List<? extends Object> myMethod() {}

这些实现的问题是,除非您查看方法实现,否则您真的不知道对象/列表中的内容。因此,如果您知道其他任何人都不会使用它,那么它可以成为捷径。

有更干净但更耗时。但它通常是一种很好的做法,因为它带有更多信息:

假设您要返回两个值,intString。您需要设计一个表示这两个(或更多值)的对象:

public class MyResponse {
    public String myString;
    public int myInt;
}

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

答案 1 :(得分:-2)

从概念上讲,Java方法应该只对数据执行一个操作并返回具体结果。如果你无法决定什么应该返回你的方法,这是该类的OOP设计不良的原因。

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