我有一个Object
类型的数组,我在其中保存了不同类型的对象,我想在从数组中取出它们后将它们强制转换回它们特定的类型。当我取出PrintWriter对象时,我尝试执行PrintWriter(objArray[1][2])
,但是这样并不起作用,我该怎么做。
我有一个Object
类型的数组,我在其中保存了不同类型的对象,我想在从数组中取出它们后将它们强制转换回它们特定的类型。当我取出PrintWriter对象时,我尝试执行PrintWriter(objArray[1][2])
,但是这样并不起作用,我该怎么做。
向下转型应按以下方式执行:
SubType instanceOfSubType = (SubType) instanceOfSuperType;
PrintWriter printWriter = (PrintWriter) objArray[1][2];
请参阅Sun有关继承的教程中的“对象转换”章节(向下滚动约一半)。
话虽如此,将所有内容收集到不透明的Object[]
中并不是理想的解决方案。如果可以的话,只需创建一个类似于Javabean的自定义类,每个类下面都有一个封装的PrintWriter
字段。例如:
public class MyBean {
private PrintWriter printWriter;
public void setPrintWriter(PrintWriter printWriter) {
this.printWriter = printWriter;
}
public PrintWriter getPrintWriter() {
return printWriter;
}
}
这样你就可以将它们收集在一个 List<MyBean>
中(想了解更多关于集合的内容,请查看此主题的Sun教程)。
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();
// ...
}