2014-11-02 74 views
0

我想知道是否有任何方法可以用参数声明一个新的实例,不要填充它们,并稍后设置它们。以后可以通过实例完成它的参数吗?

下面是一个例子:

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

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

很显然,这是不可能的,但有没有办法做到类似的东西吗?

回答

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"); 
+0

*只有在这样的构造函数由您定义或由编译器自动定义时,您才可以始终使用无参数构造函数*。 – 2014-11-02 11:55:02

+0

@LuiggiMendoza不够公平。我假设类是在OP的控制下,所以他们可以添加他们需要的任何构造函数。 – Eran 2014-11-02 11:56:21

+0

看起来很有前途,谢谢!在6分钟内接受答案。 – Biskotaki 2014-11-02 11:57:52

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

    } 

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

现在你可以使用这个如下:

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

正如其他人已经指出和你自己,有对象构造的时候可以提供没有易/官方途径需要的参数。

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

相关问题