我想知道是否有任何方法可以用参数声明一个新的实例,不要填充它们,并稍后设置它们。以后可以通过实例完成它的参数吗?
下面是一个例子:
private Example example = new Example() // Need 1 parameter.
public void foo(Object arg1)
{
example = new Example(arg1);
}
很显然,这是不可能的,但有没有办法做到类似的东西吗?
我想知道是否有任何方法可以用参数声明一个新的实例,不要填充它们,并稍后设置它们。以后可以通过实例完成它的参数吗?
下面是一个例子:
private Example example = new Example() // Need 1 parameter.
public void foo(Object arg1)
{
example = new Example(arg1);
}
很显然,这是不可能的,但有没有办法做到类似的东西吗?
您始终可以使用无参数构造函数,然后再设置所创建实例的属性。
....
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");
public class Example{
private Object object1;
public Example(){
}
public void setObject1(Object o){
this.object1 = o;
}
}
现在你可以使用这个如下:
Example example = new Example();
example.setObject1(someObject);
正如其他人已经指出和你自己,有对象构造的时候可以提供没有易/官方途径需要的参数。
你可能想看看Objenesis project。它们提供了以非标准方式实例化对象的巧妙方法。据我所知,有时能够实例化对象而不提供构造函数声明的通常强制参数。
*只有在这样的构造函数由您定义或由编译器自动定义时,您才可以始终使用无参数构造函数*。 – 2014-11-02 11:55:02
@LuiggiMendoza不够公平。我假设类是在OP的控制下,所以他们可以添加他们需要的任何构造函数。 – Eran 2014-11-02 11:56:21
看起来很有前途,谢谢!在6分钟内接受答案。 – Biskotaki 2014-11-02 11:57:52