将对象强制转换为ArrayList <String>

pad*_*dre 2 java casting arraylist

是否可以施放Object到例如ArrayList<String>

下面的代码给出了一个问题的例子.问题出在最后一行

setDocs((ArrayList<Document>)obj);
Run Code Online (Sandbox Code Playgroud)

在这里我想投一个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);

    }
Run Code Online (Sandbox Code Playgroud)

Gui*_*ume 6

在Java中,泛型不具体化,即在转换时不使用它们的泛型类型.

所以这段代码

setDocs((ArrayList<Document>)obj);
Run Code Online (Sandbox Code Playgroud)

将被执行为

setDocs((ArrayList)obj);
Run Code Online (Sandbox Code Playgroud)

由于运行时强制转换不会检查ArrayList包含Document对象,因此编译器会发出警告.