2012-12-14 7 views
5

Ich möchte einen String-Parameter als "null"java Kann ich eine Zeichenfolge erstellen, die in einer Zeile als null definiert ist?

jedoch passieren, das für die Super-Methode in einem Konstruktor ist -, so kann ich nicht

String s = null; 
super(s); 

kann ich nicht nur

super(null) 
tun

, da dies zu einem mehrdeutigen Methodenaufruf führen wird. Ich will auch keine Instanzvariable haben, die dafür null ist, das scheint unelegant zu sein.

Gibt es eine Möglichkeit, eine leere Zeichenfolge zu erstellen?

NB

new String(null) //does not compile 
+17

'Super ((String) null)' –

+5

@AndrewThompson: die eine Antwort (so einfach wie es Ihnen aussehen könnte) sein sollte. –

+0

natürlich! Danke – bharal

Antwort

5

Genau dies tun

super((String)null); 
3

Codeman die richtige Antwort geschrieben, eine andere Lösung, Umzug von null weg, und betrachten mit leeren Zeichenfolge initialisiert

super(""); 

Dies würde später eine Nullprüfung vermeiden.

+0

das ist wahr - es gibt zwar eine Null-Prüfung, und falls wir jemals etwas mit einer Nicht-Null- und Leer-Zeichenfolge machen wollen, dachte ich, ich würde mich davon fernhalten. – bharal

+0

[diese Konversation] (http://stackoverflow.com/questions/1277965/should-i-set-the-initial-java-string-values-from-null-to) Ich mag den Fehler mit der Verkettung der Zeichenfolge, aber ich auch mag die Tatsache, dass null nicht auf den Haufen geht (obwohl es in Java ein wenig sinnlos zu sein scheint). –

1

Das Problem, das Sie haben, ist, dass der Compiler nicht wissen, welcher Konstruktor verwendet werden sollte.

String hat verschiedene Einzelparameter Konstruktoren.

String(String) 
String(char value[]) 
String(StringBuffer) 
String(StringReader) 

Wenn Sie String(null) verwenden, ist es unbekannt, die verwendet werden soll.

Denken Sie daran, wenn Sie ein null als Argument (in einer Methode oder Konstruktor) verwenden, sollten Sie immer mit Cast zum gewünschten Typ weiterleiten.

new String((String) null);

Verwandte Themen