java如何返回两个值
在Java中,方法通常只能返回一个值,但可以通过以下多种方式实现返回多个值的需求:
使用数组或集合
对于相同类型的多个值,可以返回数组或集合。例如返回两个整数:
public static int[] getTwoValues() {
int[] result = {10, 20};
return result;
}
// 调用
int[] values = getTwoValues();
int first = values[0], second = values[1];
使用自定义类
创建一个专门用于封装多个返回值的类:
class Pair {
public final int first;
public final String second;
public Pair(int first, String second) {
this.first = first;
this.second = second;
}
}
public static Pair getPair() {
return new Pair(42, "Answer");
}
// 调用
Pair result = getPair();
使用现有容器类
利用Java提供的现成容器类如AbstractMap.SimpleEntry或第三方库的元组类:
import java.util.AbstractMap;
public static AbstractMap.SimpleEntry<Integer, String> getEntry() {
return new AbstractMap.SimpleEntry<>(1, "One");
}
// 调用
var entry = getEntry();
int key = entry.getKey();
String value = entry.getValue();
通过参数修改(引用传递)
通过传入数组或对象参数来间接返回多个值:
public static void getValues(int[] out1, String[] out2) {
out1[0] = 100;
out2[0] = "Modified";
}
// 调用
int[] val1 = new int[1];
String[] val2 = new String[1];
getValues(val1, val2);
使用记录类(Java 14+)
Java 14引入的record类型可以简洁地定义数据载体:
record Result(int code, String message) {}
public static Result getResult() {
return new Result(200, "OK");
}
// 调用
var r = getResult();
int status = r.code();
String msg = r.message();
选择方法时应考虑:
- 数据类型是否相同
- 是否需要不可变性
- 代码可读性要求
- 项目依赖限制
对于简单场景,数组或SimpleEntry足够;复杂业务逻辑建议使用自定义类或record类型以提高可维护性。







