一種方法返回Object
或Object[]
類型String
,但如果我使用String[]
進行投射,它在包含單個字符串時給出類轉換異常。我該如何解決這個問題?如何在java中檢查對象是字符串還是字符串數組?
有什麼方法可以檢查它是否包含String
或String[]
?
一種方法返回Object
或Object[]
類型String
,但如果我使用String[]
進行投射,它在包含單個字符串時給出類轉換異常。我該如何解決這個問題?如何在java中檢查對象是字符串還是字符串數組?
有什麼方法可以檢查它是否包含String
或String[]
?
當然,使用instanceof
operator:
if (x instanceof String) {
...
}
if (x instanceof String[]) {
...
}
等,這是不理想有做到這一點,你要知道...有你可以重新設計你的API來避免這個辦法嗎?
重寫方法總是返回String[]
,即使只有一個。
更好的是,讓它返回List<String>
並使用Collections.singletonList()
作爲單元件的情況。
爲什麼它不理想? – Konerak 2010-11-22 09:54:05
由於面向對象的問題。在這種情況下,使用'instanceof'的實際情況相當於說「我的方法在所有情況下都可能返回String []'(因爲'String'總是可以放在'String [1]'中) ,但是因爲我不夠聰明,所以我最好能夠回報任何東西,讓你應付它。「 – Riduidel 2010-11-22 09:55:18
更改API的最簡單方法是始終返回一個String [],而不是String 1的字符串[]。 – extraneon 2010-11-22 10:00:33