2012-12-14 2 views
5

mi piacerebbe passare un parametro String come "null"java Posso creare una stringa definita come null in una riga?

Tuttavia, questo è per il metodo eccellente in un costruttore - quindi non posso fare

String s = null; 
super(s); 

Non posso fare

super(null) 

in quanto ciò comporterà una chiamata al metodo ambigua. Non voglio avere una variabile di istanza che sia nulla per questo, sembra inelegante.

C'è un modo per creare una stringa nulla?

NB

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

'super ((String) null)' –

+5

@AndrewThompson: che dovrebbe essere una risposta (così semplice come potrebbe sembrare a voi). –

+0

ovviamente! Grazie – bharal

risposta

5

solo fare questo

super((String)null); 
3

CodeMan postato la risposta corretta, un'altra soluzione, allontanamento da nulla, e prendere in considerazione l'inizializzazione con la stringa vuota

super(""); 

questo eviterebbe un controllo nullo in seguito.

+0

questo è vero - c'è comunque un controllo nullo, e nel caso in cui volessimo fare qualcosa con una stringa non nullo e vuota pensavo di stare lontano da questo. – bharal

+0

[questa conversazione] (http://stackoverflow.com/questions/1277965/should-i-set-the-initial-java-string-values-from-null-to) Mi piace il bug con la stringa che concatena ma io piace anche il fatto che null non va in pila (anche se essere efficiente in java sembra un po 'inutile). –

1

Il problema è che il compilatore non sa quale costruttore deve essere utilizzato.

La stringa ha vari costruttori di parametri singoli.

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

Quando si utilizza String(null), non si sa che dovrebbe essere usato.

Ricordate quando si utilizza un null come argomento (in un metodo o costruttore), si dovrebbe sempre avanti con cast tipo desiderato.

new String((String) null);