是的,你在正確的軌道上!這是一個常見的編碼模式,可以準確解決這個問題,如何返回多個值。
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);
}
爲什麼此方法將其作爲參數,而第一個返回它?所不同的是一個方法是否願意接受一個設定值,或回報之一。如果它想要接收值,它需要一個類型爲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);
可以接受並直接返回類,就像任何其他類型的? – SLaks
它被稱爲POJO(普通舊Java對象),它可以以任何方式用於其他基元和對象(int,double,String等)。所以是的,創建一個POJO,其中包含您想要傳遞給方法的所有數據/從方法返回。 –
「_but但想從它返回多個變量_」它們都是相同的類型,你也可以返回一個'Array'(甚至是'ArrayList')。 – Gulllie