2017-02-10 12 views
0

別のクラスのメソッドを実行する必要がありますが、メソッドの呼び出し元のクラスのメソッドの変数を使用します。メソッドの変数が多すぎるため、パラメータを渡すことは望ましくありません。また、元のクラスのコードが壊れてしまいます。現在のクラスの変数を持つ異なるクラスのメソッドを実行

variable1; 
variable2; 
variable3; 
otherClass OC = new OtherClass(); 
otherClass.method(); 

と、いわゆる「otherClass」メソッド(メソッドを持つクラス)からメソッドを実行するための

クラスを、たとえば

のためである -

私のコードの例は以下の通りです。

variable1; 
variable2; 
variable3; 
public void method() 
{ 
//DOES STUFF WITH variable1 variable2 and variable3 
} 

私がしたいことは、メソッドを呼び出すクラスの変数、つまり最初にポストされたコードのクラスのメソッドを実行することです。これを行う方法はありますか?

+0

データメンバを保持するコンテナクラスを作成し、それを設定し、そのオブジェクトを呼び出し元のメソッドに渡します。 – OldProgrammer

+0

あなたは非常に明確ではない必要があります。なぜあなたのメソッドにパラメータを渡したいのですか? – davidxxx

答えて

3

OldProgrammerが述べたように、適切な解決策は、メソッドが必要とするすべての変数をカプセル化するためにコンテナを使用することです。

例:

public class ContainerClassExample { 

    private static class Container { 
     Object variable1, variable2, variable3; 

     public Container(Object variable1, Object variable2, Object variable3) { 
      this.variable1 = variable1; 
      this.variable2 = variable2; 
      this.variable3 = variable3; 
     } 
    } 

    public static void main(String[] argv) { 
     Container aContainer = new Container("a", "b", "c"); 
     methodA(aContainer); 
     System.exit(0); 
    } 

    public static void methodA(Container input) { 
     // Do something with variable1, variable2, and variable3 
    } 
} 

グレーターは、入力パラメータの数で、より多くの私はあなたのコンテナを作成するためにbuilder patternを使用することをお勧めします。

関連する問題