2016-11-27 8 views
1

ここにコーディングの初心者がいますので、できるだけ初心者にしてください!例えば、私は最近、学校のクラスやオブジェクトについて学んだことがあります。 また、間違った命名/混乱を許してください:)Javaのメソッドの変数としてオブジェクトを使用できますか?

私は方法を書いていますが、そこから複数の変数を戻したいと思っています。私は思った - 「私は私が働いているすべての変数が含まれていたクラスを作った後、返された場合はちょうどそれが私のメソッドからインスタンス何

例:

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; 
    } 
} 

今心に留め、これ?私がやりたいことはまったく正確ではありませんが、本質的に、別のクラスのメソッドで使用されている "変数のコンテナ"としてクラスを使用したいと考えています。 これを行う方法ではない場合は、何がありますか(できるだけシンプルにしてください:))

ありがとう!

+0

あなただけの他のタイプと同様に、直接クラスを受け入れ、返すことができますか? – SLaks

+0

これはPOJO(Plain Old Java Object)と呼ばれ、他のプリミティブやオブジェクト(int、double、Stringなど)を使うことができるような方法で使用できます。だから、メソッドに渡したい/メソッドから返すすべてのデータを含むPOJOを作成します。 –

+0

"_しかし、複数の変数を返すことを望んでいる_"それらはすべて同じ型のもので、 'Array'(または' ArrayList')も返すことができます。 – Gulllie

答えて

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. 最後に、その変数を返します。

また、標準の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); 
+0

**ありがとうございました!**不可能ではないことが分かっていました。 「Mathematicics」型の「結果」インスタンスを別のメソッドで再度使用する必要がある場合はどうなりますか?次のメソッドは、 public static Mathemathics anotherMethod(int result.param1、String result.param2)などと定義する必要がありますか? –

関連する問題