うん、あなたは正しい軌道に乗っている!これは、この問題を正確に解決するための共通のコーディングパターン、複数の値を返す方法です。ノートの
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()
でインスタンス化し、任意の名前を付けます。
- 次に、各フィールドに適切な値を割り当てます。
- 最後に、その変数を返します。
また、標準のJava命名規則と一致するように、MyMethod
からmyMethod
に変更しました。
あなたはその後、別の方法では、そのオブジェクトで作業したい場合は、そのメソッドは、パラメータとして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(Plain Old Java Object)と呼ばれ、他のプリミティブやオブジェクト(int、double、Stringなど)を使うことができるような方法で使用できます。だから、メソッドに渡したい/メソッドから返すすべてのデータを含むPOJOを作成します。 –
"_しかし、複数の変数を返すことを望んでいる_"それらはすべて同じ型のもので、 'Array'(または' ArrayList')も返すことができます。 – Gulllie