2016-09-01 5 views
-2

考えるコンストラクタ:ほとんどの特定のコンストラクタシグネチャ

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

私はA(null)最初のコンストラクタが呼び出されたときに起動します。引数nullの2番目のコンストラクタを呼び出す方法はありますか?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)'にはキャストは必要ありません。これは、キャストなしで2番目のコンストラクタを使用する答えです。 –

1

どこかで、あなたはまさにそれがうまくいかない場合のみである

A a = new A(null); 

を持っています。それはnew A(null)を防ぐことはできません

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

A a = new A(); 

:(。Bは、具体的なタイプではなく、汎用的であると仮定)あなたは

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

が続いて最大限のために行くと、ショートカットのコンストラクタを追加したくありません。

関連する問題