[英]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.