Wątpliwości dotyczące języka Java:

Powiedzmy, że mam klasę o nazwie A. i jej klasy potomne to A1, A2, A3 itd., jak pokazano poniżej

Na przykład

Class A 
{

}

Class A1 extends A {
}

Class A2 extends A{}
Class A3 extends A{}


Teraz mam inną klasę, która jest klasą ListA. ta klasa ma atrybut, który jest w zasadzie listą wszystkich elementów podrzędnych klasy A.

Class ListA<T> {
List<T> listOfChildren;

ListA(int n) {
//some how instantiate the above list based on the generic type.
}
}
}

Użyłem klasy ogólnej, ponieważ uważam, że jest to dobry sposób na rozwiązanie tego przypadku użycia. Ale wszelkie inne sugestie będą pomocne.

0
Ajay pal 20 listopad 2019, 00:12
Czy to jest coś, co próbujesz umieścić w kodzie, czy coś, co próbujesz wypełnić w czasie wykonywania?
 – 
azurefrog
20 listopad 2019, 00:15
Nie jestem pewien, czy rozumiem twoje pytanie. Czy chcesz listę zawierającą dowolną podklasę A ? Wtedy po prostu List jest Twoim rozwiązaniem
 – 
Akami
20 listopad 2019, 02:02

1 odpowiedź

Dlaczego nie użyć tego:

List<? extends ClassA> myList=new ArrayList();
myList.add(myClass);//You will receive an error if you add anything that does not extend from ClassA
0
Jamie Snipes 20 listopad 2019, 00:44
Nie odpowiada na pytanie, jak wypełnić listę wszystkimi podklasami klasy A.
 – 
FredK
20 listopad 2019, 00:35
Dodanie do listy jest banalne.
 – 
Jamie Snipes
20 listopad 2019, 00:37
List<T extends ClassA> jest nieprawidłowy. Możesz użyć tylko TypeVariable extends Bound w deklaracji zmiennej typu; na zmiennej, możesz użyć tylko ? extends Bound (i nie możesz dodać niczego poza null do List<? extends ClassA>).
 – 
Andy Turner
20 listopad 2019, 00:43
„i nie możesz dodać niczego poza null do List<? extends ClassA>”. Możesz dodać tylko coś, co rozciąga ClassA do List<? super ClassA> (bezpośrednio).
 – 
Andy Turner
20 listopad 2019, 00:45