Как ограничить список классов только дочерними классами (вероятно, абстрактным классом) - PullRequest
0 голосов
/ 04 июня 2018

Например, предположим, у меня есть AbstractClass, и у меня есть список дочерних классов для AbstractClass с именами FirstChildClass и SecondChildClass.А также у меня есть полностью IsolatedClass.

. Теперь предположим следующий фрагмент кода:

List<Class> classList = new ArrayList<>();
classList.add(FirstChildClass.class); // this is ok
classList.add(SecondChildClass.class); // this is ok
classList.add(IsolatedClass.class); // this should not be ok

Проще говоря, я хочу получить ошибку в третьей строке.Есть ли способ добиться этого в Java?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Я думаю, "ограниченные символы" - это то, что вы ищете.Вы бы использовали это так:

List<? extends AbstractClass> mylist = new ArrayList<>();

Таким образом, список может содержать только элементы, которые наследуются от AbstractClass.То же самое работает для интерфейсов.

0 голосов
/ 04 июня 2018

Если вы объявите свой список как

List<Class<? extends AbstractClass>> classList = new ArrayList<>();

, тогда он может содержать только классы, которые расширяют AbstractClass.

...