Java преобразует родительский элемент в дочерний?

#java

#java

Вопрос:

Вот мой код:

 for (DrawableEntity entity : drawableEntityList) {
    if (entity instanceof Beam) {
        (Beam) entity.age  = timeElapsed;
    }
    else if (entity instanceof Block) {

    }
}
  

По сути, drawableEntityList это Vector из DrawableEntitys , и я хочу повторить все в Vector . Затем, в зависимости от того, являются ли они подклассом Beam или subclass Block , я хочу сделать что-то другое.

Проблема в том, что я пытаюсь изменить переменную, которая есть только у подклассов, я подумал, что мог бы использовать (Beam), но это не работает.

Разве невозможно привести родительский класс к дочернему классу?

Комментарии:

1. Просто догадываюсь: ((Beam) entity).age = timeElapsed;

Ответ №1:

Ваш синтаксис приведения неверен.

Попробуйте это

 if (entity instanceof Beam) {
    ((Beam) entity).age  = timeElapsed;
}
else if (entity instanceof Block) {

}
  

Ответ №2:

Примечания: Остерегайтесь instanceof оператора

http://www.javapractices.com/topic/TopicAction.do?Id=31