2010-02-15 68 views
3

我有一个类型为Object的数组,其中我保存了不同类型的对象,我想在将它们从数组中取出后将它们转换回它们的特定类型。所以当我拿出PrintWriter对象时,我尝试PrintWriter(objArray[1][2]),但这不起作用,我该怎么做。java将对象作为PrintWriter

回答

3

向下转换将被做如下:

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(); 
    // ... 
}