讓我們分隔可變參數和空值之間的問題。
可變參數
可變參數的一點是要發送數據的陣列,而不需要在呼叫者的代碼作爲數組,但作爲單個變量或常數。
調用的可變參數可能不是很直觀,這裏的在各種情況下會發生什麼:
method("", "1", "2"); // vargs is {"1", "2"}
method(""); // vargs is {}, the empty array (it is not null)
method("", null); // vargs is {null}, size 1 array containing the element 'null'
method("", (Object[])null); // vargs is null, a null instance
需要注意的是第三種情況被認爲是不好的形式。例如,如果null是常量(未存儲在變量中),則會收到警告。
請注意,在第四種情況下,您確實在尋找問題! ;-)
空
的類現在,我們正在談論的是包含空值,不是一個空數組的數組(即在前面的部分整理出來)。
一般情況下
空可以是任何類(全部在同一時間)。但instanceof
將始終返回false。
放入地圖
如果一個值爲null,你需要考慮你想要做什麼。顯然,getClass()不能在空值上調用。所以,你可以選擇之間:
- 跳過空值,而不是將其添加在地圖
- 選擇一類要關聯爲空。這可能是Object,或Void或其他特定的類。想想你想用它做什麼,因爲該協會是任意的...
來源
2009-10-02 09:22:25
KLE
你有沒有想過使用Void類,正如我在我的答案中所建議的那樣? – KLE 2009-10-02 09:24:00