将一个对象转换为PrintWriter的Java强制类型转换

3

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

1个回答

3

向下转型应按以下方式执行:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接