从一个方法返回两个变量

2022-09-05 00:04:26

如何正确编写以下代码?

public String toString(int[] position, int xOffset, int yOffset) {
    String postn = String.format("[%d,%d]", position[0], position[1]);
    String movm = String.format("[%d,%d]", xOffset, yOffset);

    return (postn, movm);
}

出现以下错误

movm cannot be returned.

答案 1

使用 Java 8 时,您可以使用 Pair 类。

private static Pair<String, String> foo (/* some params */) {
    final String val1 = "";  // some calculation
    final String val2 = "";  // some other calculation

    return new Pair<>(val1, val2);
}

否则,只需返回一个数组。


答案 2

在 Java 中,不能在方法中返回两个不同的值。

当出现这种需求时,您通常有两种选择:

  1. 创建一个具有要返回的类型的类,然后返回该类的实例。通常,这些类是非常基本的,包含公共成员和可选的构造函数,用于启动具有所有必需值的实例。
  2. 将引用类型对象作为参数添加到方法中,该方法将使用要返回的值进行可变。在您的示例中,您使用字符串,因此这将不起作用,因为在Java中字符串是不可变的。

另一种选择是使用字符串数组,因为两种返回类型都是字符串。您可以将此选项用作返回值,也可以用作由该方法更改的参数。

编辑:通常“toString”方法只返回一个字符串。也许您应该考虑使用某个分隔符将两个字符串连接成一个字符串。例:

return postn + "_" + movm;