2014-02-27 2 views
0

생성자 모호성을 생성하려고 시도하는 동안 기본 유형을 사용할 때 Eclipse에서 오류가 발생하지 않는 것으로 나타났습니다. 그러나 래퍼 클래스를 사용하는 동안 그것은 오류가 throw됩니다.왜 Wrapper 클래스에만 적용 가능한 생성자 모호성

public class SubClass { 

    public SubClass(Integer i) { 

     System.out.println(i); 
    } 

    public SubClass(String str) { 
     System.out.println(str); 
    } 
} 

래퍼 클래스 인 Integer 대신 int를 사용하면 생성자 모호성 오류가 사라집니다. 그런 다음 String 유형의 매개 변수로 생성자를 호출합니다.

이 점 좀 자세히 설명해주세요.

감사합니다.

+2

여기에 모호성이 있습니까? 'null'? –

+0

모호한 널 인수 -'new SubClass (null) ' –

+0

더 명확하게하기 위해 지원하는 예제와 함께이 절을 설명 할 수 있습니까? –

답변

0

원시 데이터 형식을 null 값으로 할당 할 수 없으므로 SubClass(Stirng xx)이 사용되며 SubClass(int a)이 아니라는 것을 나타내는 생성자를 확인합니다.

Constructor가 정수를 null로 할당 할 수있는 Object를 사용하는 경우 생성자를 해결할 수 없습니다.

그래서 오류가 발생합니다.

는 대답 만 런타임에 보이는

int a = null; // gives compilation issue 
Integer a = null;; // no compilation issue 

Integer a = null; 
int x = a; // throws null pointer exception at runtime. 

을 추가합니다. int의 경우는 정수로 오토 박싱 오른쪽 생성자 버전을 선택할 수 있습니다

+0

감사합니다. 이제이 문제의 원인이 있습니다. –

1

때문에, intString에로부터 직선 경로는 그래서 모두 생성자 null의 경우 자격이 옵션

된다 결코 그래서이 없다 모호성