Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,有没有一种方法可以将对象引用传递到方法中,在方法内部实例化它,然后在方法外部访问它?_Java - Fatal编程技术网

在Java中,有没有一种方法可以将对象引用传递到方法中,在方法内部实例化它,然后在方法外部访问它?

在Java中,有没有一种方法可以将对象引用传递到方法中,在方法内部实例化它,然后在方法外部访问它?,java,Java,我有JUnit测试代码。。。下面是一个非常简单的例子,它看起来像什么。。。大概是这样的: public void test001() { String sValue = "abc123"; Customer cust = buildCustomer(); Invoice inv = buildInvoice(sValue); Account acc = buildAccount(); doTestStuff

我有JUnit测试代码。。。下面是一个非常简单的例子,它看起来像什么。。。大概是这样的:

   public void test001() {
      String sValue = "abc123";

      Customer cust = buildCustomer();
      Invoice inv = buildInvoice(sValue);
      Account acc = buildAccount();

      doTestStuff(cust, inv, acc);
   }
我需要用不同的
sValue
值创建许多不同的测试方法,因此我希望将对对象的引用传递到一个公共方法中,并在方法中实例化它们

可能吗?我想做这样的事

   private void doSetup(String sValue, Customer cust, Invoice inv, Account acc) {   
      cust = buildCustomer();
      inv = buildInvoice(sValue);
      acc = buildAccount();
   }

   public void test001() {
      Customer cust = null;
      Invoice inv = null;
      Account acc = null;
      doSetup("abc123", cust, inv, acc);
      doTestStuff(cust, inv, acc);
   }

   public void test002() {
      Customer cust = null;
      Invoice inv = null;
      Account acc = null;
      doSetup("qwerty", cust, inv, acc);
      doTestStuff(cust, inv, acc);
   }

   public void test002() {
      Customer cust = null;
      Invoice inv = null;
      Account acc = null;
      doSetup("lemonpie", cust, inv, acc);
      doTestStuff(cust, inv, acc);
   }

可能不会。如果不实例化对象,就无法将其传递给方法。当传递所有必需的参数时,您所拥有的基本上都会起作用。(你似乎在Unit3上,我建议升级。)你在这种方法中遇到了什么问题?如果你没有实例化它,就没有什么可以通过的。如果你已经实例化了它,你已经实例化了它。不清楚你在问什么。我想这里有些混乱。您的旧代码有成员变量,您使用一个方法来初始化它们,并从测试方法中调用它们。这很有效。当前代码具有局部变量。当您将它们传递给setup方法,并且该方法将它们分配给其他方法时,调用方站点上的值不会更改,因此这不符合您的要求。您必须从setup方法返回它们,因为您只能返回一件事,所以必须将它们包装在对象中。如果这使代码可读性增加或减少,则调用。