Доступ к дочернему свойству внутри списка массивов базового класса - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь получить доступ к свойству дочернего класса в списке массивов базового класса

ArrayList<Parent> listValue = new ArrayList<Parent>();
listValue.add(new Child1());
listValue.add(new Child2());

Это родительский класс

class Parent{
String name;
public Parent(String name){
  this.name = name
  }
}

Это дочерний класс

class Child extends Parent{
String childOnly;

public Child(String name){
super(name);
 }
}

И я пытаюсь получить доступ к свойству класса так:

string value = listValue.get(1).childOnly       

Ответы [ 2 ]

3 голосов
/ 31 марта 2020
  1. Укажите, что ваш список содержит любой подкласс Parent, например:
List<? extends Parent> listValue = new ArrayList<>();
Применяйте объект при извлечении из списка, например:
if (listValue.get(1) instanceof Child)
{
    Child child = (Child) listValue.get(1);
    String value = child.childOnly;
}
2 голосов
/ 31 марта 2020

вы можете проверить и разыграть:

Parent obj = listValue.get(1);
if(obj instanceof Child)
{
    chld Child = (Child)obj;
    string value = chld.childOnly;
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...