将对象强制转换为ArrayList <string> </string>

时间:2013-10-09 10:19:13

标签: java casting arraylist

可以将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);

    }

2 个答案:

答案 0 :(得分:6)

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

所以这段代码

setDocs((ArrayList<Document>)obj);

将以

执行
setDocs((ArrayList)obj);

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

答案 1 :(得分:2)

不,由于Java中如何实现泛型,这是不可能的。

类型信息在运行时不可用,因此instanceof无法检查。

您可以做的是投放到List,然后检查每个元素是否为Document