Java приведение объекта в качестве PrintWriter - PullRequest
3 голосов
/ 15 февраля 2010

У меня есть массив типа Object, в котором я сохраняю объекты разных типов, и я хочу привести их обратно к определенным типам после того, как выну их из массива. Поэтому, когда я вынимаю объект PrintWriter, я пытаюсь PrintWriter(objArray[1][2]), но это не работает, как я могу это сделать.

1 Ответ

3 голосов
/ 15 февраля 2010

Даункинг выполняется следующим образом:

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();
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...