当前位置: 首页 > 面试题库 >

在Java中返回多个值

栾昂雄
2023-03-14
问题内容

序言:我知道使用列表或其他集合来返回结果,但是随后我必须遍历列表以将结果取出:请参阅第二个示例

前言2:我正在寻找“ Java不支持…”之外的答案。

我正在寻找一种从Java方法调用返回多个对象的便捷方法。

有点像PHP:

list ($obj1, $obj2, ...) foobar();

我真的厌倦了在参数中传递持有者对象,例如:

class Holder {
   int value;
}

Holder h1=new Holder();
Holder h2=new Holder();

然后:

o.foobar(h1,h2);

如果有人想出一种优雅的方法来解决这个问题,那将非常有兴趣。

使用清单

List<String> = foobar();

这有两个缺点:

我必须先将清单装在房子的被叫方:

// this is on the callee side of the house
ArrayList<String> result = new ArrayList<String>
result.add("foo");
result.add("bar");

然后在主叫方,我必须摘录结果:

// This is on the caller side
List<String> result = foobar();
String result1 = result.get(0);
String result2 = result.get(1); // this is not as elegant as the PHP equivalent

进一步说,我想返回不同类型的对象,例如String,Integer,我将必须返回一个Objects列表,然后强制转换每个对象…

谢谢。


问题答案:

我可以想象使用通用元组类是最接近的类。为了给出一个想法,用于三个返回值的通用类可能看起来像这样:

public class T3<A, B, C> {
    A _1;
    B _2;
    C _3;
    T3(A _1, B _2, C _3) {
        this._1 = _1;
        this._2 = _2;
        this._3 = _3;
    }
}

这样,被调用方就可以使用一个语句构造器,例如:

public T3<String, Integer, Character> getValues() {
    return new T3<String, Integer, Character>("string", 0, 'c');
}

但不会执行被调用方的所有者实例构建。

每个返回值数量都需要自己的元组类。在功能Java库中可能提供了类似的内容。作为参考,这是一个N-Tuple实现。

对于二值情况,java.util.AbstractMap.SimpleEntry将这样做:

return new SimpleEntry<String, Integer>("string", 0);

无论如何,我看到多个返回值要考虑的两个重要点:

  1. 输入的返回值
  2. 指出每个返回值的含义

尽管很无聊,但我建议创建一个单独的类来保存所有响应值,并将其声明为方法返回类型。这样,可以突出显示每个值的含义。



 类似资料:
  • 问题内容: 我试图在 JavaScript中 返回两个值。这可能吗? 问题答案: 否,但是您可以返回一个包含您的值的数组: 然后,您可以像这样访问它们: 使用最新的ECMAScript 6语法 *,您还可以更直观地分解返回值: 如果要在每个返回值上贴上“标签”(易于维护),则可以返回一个对象: 并访问它们: 或使用ES6语法:

  • 问题内容: 我用Java写了一个函数,我希望这个函数返回多个值。除了使用数组和结构外,还有没有办法返回多个值? 我的代码: 问题答案: 在Java中,当您希望函数返回多个值时,必须 将这些值嵌入到您返回的对象中 或更改传递给函数的对象 在您的情况下,您显然需要定义一个可以包含,和的类: 然后将您的功能更改为

  • 问题内容: 在Java中是否可以从方法返回两个或多个值到main?如果是这样,有可能吗?如果没有,我们怎么办? 问题答案: 你可以使用Java返回Class的对象。 如果要返回多个相关的值,则将它们封装到一个类中,然后返回该类的对象是有意义的。 如果要返回不相关的值,则可以使用Java的内置容器类(例如Map,List,Set等)。有关更多详细信息,请检查java.util包的JavaDoc。

  • 问题内容: 今天,我在登录表单后面添加了额外的安全检查,以减缓暴力攻击。我有多个登录表单,并提供了一个易于调用的函数,该函数可以进行所有检查,然后返回结果。 问题是结果不是单个值,结果包括: 为此,我创建了一个新类。这一切都很好。 但是我经常有方便的实用程序函数,这些函数会返回多个值,并开始发现每次为结果创建一个新类都有些烦人。 有没有更好的方法来返回多个值?还是我只是懒惰?:) 问题答案: 不,

  • 问题内容: 我正在尝试从使用两个表(员工和部门)的函数返回%rowtype中的多个值,但是它对我不起作用。 问题答案: 上面的函数编译没有任何错误?是什么类型的?理想情况下,它应该像下面这样。

  • 问题内容: 我是新手,遇到此问题: 当我这样渲染时,它会给我错误提示 我应该为每个html标签或每一行创建一个componenet,还是可以以这种方式呈现。 有什么建议吗? 问题答案: 在React <v16.0中,该方法只能呈现单个根节点。( 更新: 这在v16中已更改,请参见下文)。就您而言,您将返回3个节点。为了解决这个问题,您可以将3个节点包装在一个根节点中: 在React v16中,可以