2016-09-01 5 views
-2

감안할 때 생성자 :대부분 특정 생성자 서명

  1. A(B... params)
  2. A(String param1, B... params)

나는 A(null) 첫번째 생성자가 호출 호출 할 때. 인수 null로 두 번째 생성자를 호출하는 방법이 있습니까? 그러나 캐스팅하지 않고 nullString으로 변환 하시겠습니까?

편집 : 내 문제를 설명하는 데 몇 가지 실수를했습니다. 이제는 괜찮을 것입니다.

+1

'new A ((String) null) '을 호출하는 문제는 무엇입니까? – kennytm

+0

@kennytm 나는 이것이 문제라는 말은 아니며, 다른 방법이 있는지 묻고있다. – ctomek

+2

왜 다른 방법을 찾고 있습니까? 이 방법의 문제점과 해결하고자하는 문제는 무엇입니까? (다른 방법이 없기 때문에 적어도 내가 아는 것). 그리고 왜 당신은 2 명의 생성자를 가지고 있습니까? – Tunaki

답변

-2

죄송합니다. 귀하의 문제는 보이지 않습니다.

public class A 
{ 
    A(String a) 
    { 
     System.out.println("constructor(String)"); 
    } 

    A(String a, B... b) 
    { 
     System.out.println("constructor(String, B...)"); 
    } 

    public static void main(String[] args) 
    { 
     new A(null, null); 
    } 

    private static final class B 
    { 

    } 
} 
+0

지금 편집 중이기 때문에 내 질문을 다시 읽으십시오. – ctomek

+0

대답이 아닙니다. 여기서 대답하려고하는거야? – TheLostMind

+0

첫 번째 질문에 실수를 한 경우에만 마이너스 1을 받고 싶지 않습니다. 둘째 : 당신은 내 안주 때문에 실수를 깨달았습니다. 셋째 : 나의 대답은 당신이 놓친 새로운 것이있다 :'new A (null, null)'은 캐스트가 필요 없다. 따라서 이것은 캐스트없이 두 번째 생성자를 사용하는 대답입니다. –

1

어딘가에 당신은 잘못 정확히 그래서 유일한 경우입니다

A a = new A(null); 

있습니다. (B 가정하면 일반적인 구체적인 유형이 아닙니다.) 당신은

A a = new A((String)null); 
A a = new A(""); 

그런 다음 최대한 가고 싶어하고, 바로 가기 생성자를 추가하지 마십시오 : 그것은 new A(null)을 방지하지 않습니다

A() { 
    this((String) null); 
} 

A a = new A(); 

.