1

这里是编码的初学者,所以请尽可能对初学者友好!例如,我最近刚刚了解了学校的课程和对象。另外,请原谅任何错误的命名/混淆:)

我有很多实例,我正在编写一种方法,但想从中返回多个变量。我想 - “如果我创建一个包含我正在使用的所有变量的类,然后从我的方法中返回它的实例呢?

例子:

public class Mathematics {
    int number1;
    int number2;
}

public class MyClass {
    public static void main (String [] args);


    public static <class?> MyMethod (<class Mathematics?>)
       //in here, the method works with numbers one and two, and then returns them, like so:
      return Mathematics;
    }
}

现在请记住,这并不是我想要做的,但本质上,我想将一个类用作另一个类的方法中使用的“变量容器”。如果这不是这样做的方法,我想知道是什么(请尽可能简单:))。

谢谢!

4

1 回答 1

4

是的,你在正确的轨道上!这是一个常见的编码模式来精确解决这个问题,如何返回多个值。

public static Mathematics myMethod(int param1, String param2, float param3) {
    Mathematics result = new Mathematics();

    result.number1 = param1 * 2;
    result.number2 = param2.length();

    return result;
}

注意事项:

  1. 返回类型是Mathematics.
  2. 参数可以是任何东西。他们不需要与Mathematics班级相关,尽管他们可能是。
  3. 首先,实例化一个新对象new Mathematics()并给它一个任意名称。
  4. 然后,为每个字段分配一个您认为合适的值。
  5. 最后,返回该变量。

此外,我将其从 更改MyMethodmyMethod以匹配标准 Java 命名约定。


如果您想在另一个方法中使用该对象,该方法应该将一个Mathematics对象作为参数。

public static void otherMethod(Mathematics values) {
    System.out.println("number1 is " + values.number1);
    System.out.println("number2 is " + values.number2);
}

为什么这个方法将它作为参数而第一个返回它?区别在于方法是要接收一组值还是返回一个值。如果它想接收值,它需要一个 type 的参数Mathematics。如果它想向调用者返回值,它的返回类型应该是Mathematics.

换句话说,值是输入还是输出?

顺便说一下,这些并不是相互排斥的。一个方法既可以接受也可以返回一个对象。一个例子:

/**
 * Returns half of the input values. Does not modify the input object.
 * Instead, a new object is returned.
 */
public static Mathematics halfOf(Mathematics input) {
    Mathematics output = new Mathematics();

    output.number1 = input.number1 / 2;
    output.number2 = input.number2 / 2;

    return output;
}

然后可以这样调用:

Mathematics values  = myMethod(42, "foobar", 3.14);
Mathematics altered = halfOf(values);

System.out.println("Half of " + values.param1 + " is " + altered.param1);
System.out.println("Half of " + values.param2 + " is " + altered.param2);
于 2016-11-27T00:25:27.823 回答