是的,你在正确的轨道上!这是一个常见的编码模式来精确解决这个问题,如何返回多个值。
public static Mathematics myMethod(int param1, String param2, float param3) {
Mathematics result = new Mathematics();
result.number1 = param1 * 2;
result.number2 = param2.length();
return result;
}
注意事项:
- 返回类型是
Mathematics
.
- 参数可以是任何东西。他们不需要与
Mathematics
班级相关,尽管他们可能是。
- 首先,实例化一个新对象
new Mathematics()
并给它一个任意名称。
- 然后,为每个字段分配一个您认为合适的值。
- 最后,返回该变量。
此外,我将其从 更改MyMethod
为myMethod
以匹配标准 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);