[英]cast object to ArrayList<String>
是否可以將Object
為例如ArrayList<String>
下面的代碼給出了一個問題的例子。 問題出在最后一行
setDocs((ArrayList<Document>)obj);
我想將Object obj
為ArrayList<String>
public void setValue(Object obj)
{
if(obj instanceof TFile)
setTFile((TFile)obj);
else
if(obj instanceof File)
setFile((File)obj));
else
if(obj instanceof Document)
setDoc((Document)obj);
else
if(obj instanceof ArrayList)
setDocs((ArrayList<Document>)obj);
}
在Java中,泛型不具體化,即在轉換時不使用它們的泛型類型。
所以這段代碼
setDocs((ArrayList<Document>)obj);
將被執行為
setDocs((ArrayList)obj);
由於運行時強制轉換不會檢查ArrayList
包含Document
對象,因此編譯器會發出警告。
不,由於Java中如何實現泛型,這是不可能的。
類型信息在運行時不可用,因此無法通過instanceof
進行檢查。
您可以做的是轉換為List
,然后檢查每個元素是否為Document
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.