2014-11-02 2 views
0

매개 변수가있는 새 인스턴스를 선언하고 채우지 않으며 나중에 설정 만하는 방법이 있는지 궁금합니다.인스턴스가 나중에 인수를 완료 할 수 있습니까?

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

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

이 불가능하지만 비슷한 할 수있는 방법이 분명하다 : 여기

은 예입니다?

답변

2

항상 매개 변수가없는 생성자를 사용하고 나중에 만든 인스턴스의 속성을 설정할 수 있습니다.

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

* 매개 변수가없는 생성자 *는 해당 생성자가 사용자 나 컴파일러에서 자동으로 정의한 경우에만 사용할 수 있습니다. –

+0

@LuiggiMendoza 충분합니다. 그 클래스가 OP의 제어하에 있다고 가정하고 있었기 때문에 그들은 필요한 생성자를 추가 할 수있었습니다. – Eran

+0

유감스럽게 생각합니다. 감사합니다! 6 분 안에 대답을 수락하십시오. – Biskotaki

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

    } 

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

이제 당신은이를 사용할 수 있습니다 매개 변수가 필요합니다.

Objenesis project을보고 싶을 수 있습니다. 이들은 비표준 방식으로 객체의 영리한 방법을 제공합니다. 내 지식을 때로는 생성자가 선언 한 보통 필수 인수를 제공하지 않고 객체를 인스턴스화 할 수 있습니다.

0

하는 것은 이미 자신을 다른 사람이 언급하고 당신이 제공 할 수없는 경우 객체 생성의 쉬운/공식적인 방법이 없습니다, 다음과 같이

.... 
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"); 
관련 문제