2016-09-01 8 views
-2

Da Konstrukteure:Die meisten spezifischen Bauunternehmer Unterschrift

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

Wenn ich rufe A(null) erste Konstruktor aufgerufen wird. Gibt es eine Möglichkeit, den zweiten Konstruktor mit dem Argument null aufzurufen, ohne null auf String zu übertragen?

EDIT: Ich habe einige Fehler bei der Beschreibung meiner Probleme gemacht, jetzt sollte es in Ordnung sein.

+1

Was ist das Problem beim Aufruf von 'new A ((String) null)'? – kennytm

+0

@kennytm Ich sage nicht, dass es ein Problem ist, ich frage, ob es eine andere Möglichkeit gibt, das zu tun. – ctomek

+2

Warum suchen Sie nach einem anderen Weg? Was ist falsch an dieser Art und was ist das Problem, das Sie ansprechen möchten? (Weil es keine anderen Wege gibt, zumindest weiß ich davon). Und warum haben Sie 2 Konstruktoren, um damit zu beginnen? – Tunaki

Antwort

-2

Sorry, aber ich sehe dein Problem nicht.

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

Meine Frage erneut einlesen, weil sie jetzt bearbeitet wird. – ctomek

+0

Keine Antwort. Was versuchst du hier zu beantworten? – TheLostMind

+0

Erstens: Ich mag es nicht, minus 1 von dir zu bekommen, nur weil du in deiner Frage einen Fehler gemacht hast. Zweitens: Du hast deinen Fehler nur aufgrund meiner Antwort erkannt. Drittens: Meine Antwort hat etwas Neues, das du verpasst hast: 'new A (null, null)' benötigt keinen Cast. Dies ist also eine Antwort, um den zweiten Konstruktor ohne eine Umwandlung zu verwenden. –

1

Irgendwo Sie haben

A a = new A(null); 

Das ist das genau so der einzige Fall ist, wo es schief geht. (B Unter der Annahme, ist ein konkreter, nicht generisch.) Sie wollen nicht

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

Dann gehen Sie für die höchste, und fügen Sie eine Verknüpfung Konstruktor:

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

A a = new A(); 

Es ist nicht new A(null) zu verhindern.