2016-03-07 4 views
0

Мне нужно придумать объект java для подкласса, потому что нужно установить индикатор для метода, доступного в подклассе, тогда я собираюсь установить объект Super class в List.TypeCasting to SubClass в Java

Нужно ли делать что-либо между ними или индикатором, как установлено после того, как приведение типов будет отображаться, когда я получу объект из списка?

MemRow - это суперкласс, а MemAttrRow - это подкласс с новым свойством recstat; код ниже:

MemRow memRow; 
    List<MemRow> memRwList;//where the superclass will get added 
    // type cast to subclass memAttrRow and set the recstat 
    MemAttrRow memAttrRow = (MemAttrRow) memRow; 
    String ind= "A"; 
    memAttrRow.setRecStat(ind); 
    //add superclass to the list 
    memRwList.addRow(memRow); 
+1

Я не могу сказать, что это предложение должно означать, но глядя на ваш код - нет, нет ничего особенного, что вам нужно делать. –

+1

Ваш вопрос пока неясен. Кастинг не изменяет тот объект, о котором вы говорите, поэтому изменение, когда вы вызываете 'setRecStat', по-прежнему будет видно позже, если это то, что вы имеете в виду. Я предлагаю вам попробовать его и опубликовать [mcve], если у вас есть проблемы. –

+1

Тип отливки не самая лучшая практика здесь. Вы можете добавить конструктор или сеттер в подкласс, который может инициализировать поля из объекта суперкласса. Тогда вы можете сделать «MemAttrRow memAttrRow = new MemAttrRow (memRow)» –

ответ

1

Вам не нужно делать что-нибудь еще. Предполагая, что memRow действительно является экземпляром MemAttrRow, когда вы установите его свойство, оно будет сохранено во время операций, таких как добавление объекта в список.

Однако стоит упомянуть, что вы должны быть уверены, что реальный (runtime) тип объекта - MemAttrRow, прежде чем вводить его, или вы можете получить ClassCastException.

+1

Чтобы проверить, что это может быть применено к MemAttrRow, используйте ключевое слово instanceof: if (memRow instanceof MemAttrRow) {// сделать что-то} else {// это не MemAttrRow ... сделать что-то еще} – Jeutnarg

Смежные вопросы