簡體   English   中英

將對象強制轉換為ArrayList <String>

[英]cast object to ArrayList<String>

是否可以將Object為例如ArrayList<String>

下面的代碼給出了一個問題的例子。 問題出在最后一行

setDocs((ArrayList<Document>)obj);

我想將Object objArrayList<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM