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

Vis*_*kia 6 java oop methods return-value design-principles

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

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

mpr*_*vat 2

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

public String[] myMethod{} {}
Run Code Online (Sandbox Code Playgroud)

如果不是,您有多种选择:

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

public Object[] myMethod{} {}
Run Code Online (Sandbox Code Playgroud)

或者

public List<? extends Object> myMethod() {}
Run Code Online (Sandbox Code Playgroud)

这些实现的问题是,除非您查看方法实现,否则您实际上不知道对象/列表中的内容。因此,如果您知道没有其他人会使用它,那么它可能是一个捷径。

比较干净,但比较费时间。但这通常是一个很好的做法,因为它携带更多信息:

假设您想返回两个值 anint和 a String。您需要设计一个代表这两个(或更多值)的对象:

public class MyResponse {
    public String myString;
    public int myInt;
}
Run Code Online (Sandbox Code Playgroud)

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

  • +0:很好的信息,但现在与问题没有直接关系 - 显示如何在单个结果中返回多个项目,而不是“为什么是单个结果”。还考虑提供答案的“为什么单一返回值”部分。也许“为什么没有像 C++ 中那样的 `out`/`ref` 结果”? (6认同)