通过构造函数在java中传递对象

时间:2015-12-04 19:58:40

标签: java object constructor

更好的是:通过构造函数传递对象并将其保存到另一个类中的新引用,或者通过构造函数直接将其传递给方法?有什么不同吗?

class A
{ 
  int a;
  int b;
} 

class B
{
  public A refA;

  public B(A refA)
  {
    this.refA = refA;
    methodInB(refA); 
  }

  public void methodInB(A refA)
  {
    ...
  }
}

OR ---------------------------------------------- ----或者

class A
{ 
  int a;
  int b;
} 

class B
{
  public B(A refA)
  {
    methodInB(refA);
  }

  public void methodInB(A refA)
  {
    ...
  }
}

1 个答案:

答案 0 :(得分:0)

取决于A是否是B的组成部分,对于methodInB是否相同。如果我们不在B中引用A的引用,那么methodInB就变成了一种实用方法,最好是静态的。如果它不是实用程序,则它依赖于A,A的引用应该放在B中。

如果B中还有其他方法可能需要相同的A实例来操作,那么最好将A的引用保存在B中。

如果methodInB充当实用程序,那么它应该放在一个实用程序类中,其中static修饰符采用A和B类型参数。

检查以下内容:

public class A { }
public class B { }

public class MyUtility {
    public static void methodInB(A a, B b) {
        //operate on a and b
    }
}

//  MyUtility can also have a dependency on A and B both and thus make methodInB a non static methodInB
public class MyUtilityBean {
    private A a;
    private B b;

    public void methodInB() {
        //operate on a and b
    }
}

//Other wise A acts as a dependency of B

public class B {
    private A a;
    public void methodInB() {
        //operate on a
    }
}