我有一个Object
类型的数组,我在其中保存不同类型的对象,我想在将它们从数组中取出后将它们转换回它们的特定类型。所以当我拿出PrintWriter对象时,我尝试PrintWriter(objArray[1][2])
,但这不起作用,我该怎么做呢。
答案 0 :(得分:3)
向下转发的方式如下:
SubType instanceOfSubType = (SubType) instanceOfSuperType;
因此,在您的特定情况下,您可能希望这样做:
PrintWriter printWriter = (PrintWriter) objArray[1][2];
另请参阅Sun's tutorial about inheritance中的“投射对象”章节(向下滚动一半)。
那就是说,收集一切不透明的Object[]
并不是很理想。如果可以,只需在每个封装的PrintWriter
字段下创建一个类似自定义Javabean的类。 E.g。
public class MyBean {
private PrintWriter printWriter;
public void setPrintWriter(PrintWriter printWriter) {
this.printWriter = printWriter;
}
public PrintWriter getPrintWriter() {
return printWriter;
}
}
通过这种方式,您可以在List<MyBean>
中收集它们(要了解有关收藏的详情,请查看此Sun tutorial on the subject)。
List<MyBean> myBeans = new ArrayList<MyBean>();
MyBean myBean1 = new MyBean();
myBean1.setPrintWriter(printWriter1);
myBeans.add(myBean1);
MyBean myBean2 = new MyBean();
myBean2.setPrintWriter(printWriter2);
myBeans.add(myBean2);
// ...
以便您可以按如下方式检索它们:
for (MyBean myBean : myBeans) {
PrintWriter printWriter = myBean.getPrintWriter();
// ...
}