实例可以在以后完成其参数吗?

时间:2014-11-02 11:51:39

标签: java instances

我想知道是否有任何方法可以声明带参数的新实例,不要填充它们,稍后再设置它们。

以下是一个例子:

private Example example = new Example() // Need 1 parameter.

public void foo(Object arg1)
{
   example = new Example(arg1);
}

很明显,这是不可能的,但有没有办法做类似的事情?

3 个答案:

答案 0 :(得分:2)

您始终可以使用无参数构造函数,然后稍后设置已创建实例的属性。

....
public Example ()
{
    this.s = null;
}

public Example (String s)
{
    this.s = s;
}
....
public void setS (String s)
{
    this.s = s;
}
....
Example ex = new Example ("something");
Example ex2 = new Example ();
ex2.setS("Something Else");

答案 1 :(得分:0)

public class Example{
   private Object object1;
   public Example(){ 

   }

   public void setObject1(Object o){
      this.object1 = o;
   }
}

现在你可以按如下方式使用它:

Example example = new Example();
example.setObject1(someObject);

答案 2 :(得分:0)

正如其他人和你自己所说,当你无法提供所需的参数时,没有简单/官方的对象构建方式。

您可能需要查看Objenesis project。它们以非标准方式提供了巧妙的对象实例化方法。据我所知,有时能够实例化对象而不提供构造函数声明的通常必需的参数。