【问题标题】:How to return multiple values? [duplicate]如何返回多个值? [复制]
【发布时间】:2012-01-23 08:52:39
【问题描述】:

在 Java 中是否可以从一个方法返回两个或多个值到 main?如果是这样,怎么可能,如果不是,我们怎么办?

【问题讨论】:

  • 返回数组、列表、集合、映射或包含多个值的自定义对象。我在某个地方看到过同样的问题....让我找到那个。关于这个话题有多个问题:stackoverflow.com/search?q=return+multiple+values+in+java%3F
  • 也许为时已晚,但请使用 java.util.AbstractMap.SimpleIEntry。可重复使用,自 1.6 以来无处不在
  • 如果您使用的是 Java 14+,通常最好使用 Java Record 而不是 SimpleEntry 来表示一对值。

标签: java


【解决方案1】:

您可以在 Java 中返回 Class 的对象。

如果您返回超过 1 个相关的值,那么将它们封装到一个类中然后返回该类的一个对象是有意义的。

如果您想返回不相关的值,那么您可以使用 Java 的内置容器类,如 Map、List、Set 等。有关详细信息,请查看 java.util 包的 JavaDoc。

【讨论】:

  • 我要再补充一点 - 保持返回的对象不可变(最好在构造函数中初始化它并保持你的字段最终)
  • 你可以返回一个对象,但是如果你的程序中有这么多的返回对象,它会使源代码变得复杂。对于从一个方法一次返回的东西来说,最好有元组。像 C#。亲爱的 c# 它是一门很棒的语言
  • 我想在 Java 中应该有 C# outref 参数等效,否则我需要创建类,即使返回两个变量和每个函数返回多个值。如果我们遵循这一点,那么每个返回多个值的函数都会有一个类。虽然现在使用 Map 感觉更好。
  • 我会使用地图或设置来保持简单:)
  • 返回地图、列表或集合(以避免返回 DTO)恕我直言是一种反模式。
【解决方案2】:

你可以这样做:

public class Example
{
    public String name;
    public String location;

    public String[] getExample()
    {
        String ar[] = new String[2];
        ar[0]= name;
        ar[1] =  location;
        return ar; //returning two values at once
    }
}

【讨论】:

  • 性能效率如何?
【解决方案3】:

您只能返回一个值,但它可以是具有多个字段的对象——即“值对象”。例如

public class MyResult {
    int returnCode;
    String errorMessage;
    // etc
}

public MyResult someMethod() {
    // impl here
}

【讨论】:

    猜你喜欢
    • 2018-08-10
    • 2019-03-02
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2010-09-30
    • 2020-06-20
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多