2012-12-14 30 views
5

我想傳遞一個字符串參數爲「空」java我可以創建一個字符串在一行中定義爲空?

但是,這是在構造函數中的超級方法 - 所以我不能做

String s = null; 
super(s); 

我不能只是做

super(null) 

因爲這會導致模糊的方法調用。我不希望有一個實例變量爲null,這似乎不雅觀。

有沒有辦法創建一個空字符串?

NB

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

'超((字符串)空)' –

+5

@AndrewThompson:這應該是一個答案(簡單,因爲它可能給你看看)。當然是 –

+0

!謝謝 – bharal

回答

5

只是這樣做

super((String)null); 
3

CodeMan公佈正確答案,另一種解決方案, 移動遠離空,並考慮與空字符串初始化

super(""); 

這將避免稍後的空檢查。

+0

這是真的 - 儘管有一個空檢查,並且萬一我們想要用非空和空字符串做一些事情,我想我會遠離這一點。 – bharal

+0

[this conversation](http://stackoverflow.com/questions/1277965/should-i-set-the-initial-java-string-values-from-null-to)我喜歡字符串連接的錯誤,但我也像null事實上並沒有堆在一起(儘管在java中高效似乎沒有意義)。 –

1

您遇到的問題是編譯器不知道應該使用哪個構造函數。

字符串有各種單參數構造函數。

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

當您使用String(null),這是應該使用不明。

請記住,當您使用null作爲參數(在方法或構造函數中)時,您應該總是將其轉換爲所需的類型。

new String((String) null);

相關問題