3
我有一个类型为Object
的数组,其中我保存了不同类型的对象,我想在将它们从数组中取出后将它们转换回它们的特定类型。所以当我拿出PrintWriter对象时,我尝试PrintWriter(objArray[1][2])
,但这不起作用,我该怎么做。java将对象作为PrintWriter
我有一个类型为Object
的数组,其中我保存了不同类型的对象,我想在将它们从数组中取出后将它们转换回它们的特定类型。所以当我拿出PrintWriter对象时,我尝试PrintWriter(objArray[1][2])
,但这不起作用,我该怎么做。java将对象作为PrintWriter
向下转换将被做如下:
SubType instanceOfSubType = (SubType) instanceOfSuperType;
因此,在您的特定情况下,你可能想这样做:
PrintWriter printWriter = (PrintWriter) objArray[1][2];
另请参阅Sun's tutorial about inheritance“转换对象”一章(滚动大约一半)。
也就是说,收集一切在不透明的Object[]
是不是很理想。如果可以,只需在封装的PrintWriter
字段下创建一个定制的类似于Javabean的类。例如。
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();
// ...
}