我已經實現了這個功能:的Java:未選中從X轉換爲Y /如何實現castOrNull
static <X,Y> Y castOrNull(X obj) {
try {
return (Y)obj;
}
catch(ClassCastException e) {
return null;
}
}
這使我的編譯器警告:
Type safety: Unchecked cast from X to Y
我不明白究竟。 try/catch
是不是我在這裏做檢查?我可以忽略警告嗎?
我的功能是否按預期工作?我將如何正確實施它?
我也嘗試了obj instanceof Y
檢查,但由於Java處理泛型的方式,這不起作用。
順便說一句,這個功能對我來說似乎很有用(使其他代碼更清潔)。我不知道Java中是否已經存在這樣的函數?
一個例子,我想使用它:
void removeEmptyRawStrings() {
for(Iterator<Entity> e = entities.iterator(); e.hasNext();) {
RawString s = castOrNull(e.next());
if(s != null && s.content.isEmpty()) e.remove();
}
}
我有一樣的情況下,這些常常在我的代碼。我認爲這比其他任何東西都更具可讀性和簡單性。但如果你有任何關於如何使代碼更簡單的問題,請給我一個更好的建議。
今天我在想這個警告,是否有可能有一個檢查過的演員,但我認爲你不能這樣做。 – DeliveryNinja 2010-10-14 13:42:28