2013-11-20 6 views
0

인스턴스를 선언하는 MyObject 유형의 객체 obj가 있습니다.자바 초기화/객체 선언

MyObject obj; 

그러나 초기화하지 않았습니다. MyObject의 클래스는 다음과 같습니다.

public class MyObject { 
    public String i; 
    public String j; 
    public MyObject(String i) { 
     i = this.i; 
    } 
} 

이제 j의 값을 설정하고 싶습니다. 따라서 저는 이렇게 말합니다 :

obj.j = "Hello"; 

obj를 초기화하지 않고도이 작업을 수행 할 수 있습니까? 즉 말을하지 않고 : 나는 그것의 값을 확인한다면 나는 그것을 충분히하지 널 수 있도록 초기화하지 않거나 그 안에 필드를 설정하는 경우

obj = new MyObject("My i"); 

이 객체가 null이 될 것인가?

감사합니다.

+0

생성자 명령문이 거꾸로 작성되었습니다. 'this.i = i; '라고 말해야합니다. – stackular

답변

3

아니요, 그렇게 할 수 없습니다. 필드에 액세스하려면 MyObject의 새 인스턴스를 만들어야합니다.

물론 필드를 static으로 만들지 않는 한.

필드가 public 인 경우 캡슐화에 위배됩니다. 비공개로 설정하거나 (적절한 경우 protected) getter 및 setter를 사용하여 액세스 권한을 제공해야합니다.

(!) 참고는 :

public MyObject(String i) { 
    i = this.i; 
} 

이것은 당신이 원하는 것을 할 수 없습니다.

필드 변수 i에 매개 변수 i을 할당해야합니다. 다른 방법은 아닙니다.

public MyObject(String i) { 
    this.i = i; 
} 
+0

고마워요! 일단 내가 허락되면 당신의 대답을 받아 들일 것입니다 ... –