gpt4 book ai didi

java - 在一行中初始化来自同一源的多个变量(JAVA)

转载 作者:行者123 更新时间:2023-11-30 02:20:22 30 4
gpt4 key购买 nike

给定方法:

private Object[] method(){
//run some codes
return new Object[]{Obj1, Obj2};
}

请注意,2 次不同的运行将给出唯一的输出,因此以下内容将是不正确的

Object obj1run1 = method()[0], obj2run1 = method()[1];
//Because the method will be run 2 times with 2 unique results;

我知道我可以通过以下方式解决我的问题:

Object hold[] = method();
obj1run1 = hold[0];
obj2run1 = hold[1];

但我正在寻找一种最小且快速的编写代码的方法,例如:

(obj1run1, obj2run1) = method();
//saw this somewhere but doesnt work on Java

所以我的问题(使用上面的例子):如何用尽可能少的代码行将数组的内容分配给多个变量?

最佳答案

(obj1run1, obj2run1) = method();

此语法通常称为读取元组,可用于其他几种语言(Swift、最新的 C# 等)but not in Java .

尽管您的解决方案工作正常,但您最好创建一个特殊的类来返回特定的元组。由于您返回的两个对象以某种方式相关,至少是从同一个方法返回,因此为它们定义一个类可能是一个好主意:

class HoldingPair {
private final Object first;
private final Object second;
public Object getFirst() { return first; }
public Object getSecond() { return second; }
public HoldingPair(Object a, Object b) {
first = a;
second = b;
}
... // hashCode, equal, toString
}

现在您的方法可以返回一个 HoldingPair 对象,例如您可以直接使用该对象

HoldingPair hold = method();
...
if (hold.getFirst() != null) {
...
}
if (hold.getSecond() != null) {
...
}

关于java - 在一行中初始化来自同一源的多个变量(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033891/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com