2012-12-14 22 views
5

Ben "boş" Ancakjava Tek satırda null olarak tanımlanan bir dize oluşturabilir miyim?

gibi bir dize parametresi geçirmek istiyorum, bu yapıcı süper yöntem için - yani ben sadece yapamam

String s = null; 
super(s); 

yapamaz

super(null) 

, bu durum belirsiz bir yöntem çağrısına neden olacaktır. Bunun için null olan bir örnek değişkenine sahip olmak istemiyorum.

Boş bir Dize oluşturmanın bir yolu var mı?

NB

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

'süper ((String) null)' –

+5

@AndrewThompson: (size görünebilir kadar basit) bir cevap olmalıdır. Tabii ki –

+0

! Teşekkürler – bharal

cevap

5

Sadece bu

super((String)null); 
3

CodeMan hareket uzakta boş gelen doğru cevabı, başka bir çözüm, yayınlanan yapmak ve Boş dize ile başlatılıyor düşünün

super(""); 

Bu daha sonra bir null çek önlemek olacaktır.

+0

bu doğrudur - yine de bir null check var, ve hiç boş olmayan ve boş bir dize ile bir şeyler yapmak istediğimizde, bundan uzak durmayı düşünmüştüm. – bharal

+0

[bu konuşma] (http://stackoverflow.com/questions/1277965/should-i-set-the-initial-java-string-values-from-null-to) Böceği birleştiren dizgiyi seviyorum ama ben Ayrıca null gerçeğini sevmiyorum (java'da verimli olmak biraz anlamsız gibi görünüyor). –

1

Sahip olduğunuz sorun, derleyicinin hangi kurucunun kullanılması gerektiğini bilmemesidir.

Dize, çeşitli tek parametre yapıcıya sahiptir. Eğer String(null) kullandığınızda

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

, bu kullanılması gerektiğini bilinmemektedir.

Eğer (bir yöntem veya yapıcı olarak) argüman olarak bir null kullandığınızda Unutmayın, gerektiği daima ileri istenilen türüne oyuncularla.

new String((String) null);

İlgili konular