我想知道是否有任何方法可以声明带参数的新实例,不要填充它们,稍后再设置它们。
以下是一个例子:
private Example example = new Example() // Need 1 parameter.
public void foo(Object arg1)
{
example = new Example(arg1);
}
很明显,这是不可能的,但有没有办法做类似的事情?
答案 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。它们以非标准方式提供了巧妙的对象实例化方法。据我所知,有时能够实例化对象而不提供构造函数声明的通常必需的参数。