#java #generics #instanceof
#java #дженерики #instanceof
Вопрос:
Вопрос, специфичный для дженериков в Java, и их использование с instanceof
:
Для следующего if-оператора: if (((NodeInternal<Value>) parent).NW() instanceof NodeLeaf<?>)
Мне нужно это приведение, чтобы получить доступ к parent
«s NW
«. NW
это свойство parent
, которое имеет тип NodeInternal
.
Мне нужно проверить, является ли ссылочный указатель, удерживаемый, NW
экземпляром NodeLeaf<?>
. Возникает ошибка времени выполнения: NodeLeaf cannot be cast to NodeInternal
. Это связано с тем, что лист приводится как внутренний, однако приведение должно быть только для parent
того, чтобы иметь доступ NW()
.
Как бы мне исправить такую проблему?
Спасибо
Комментарии:
1. Ну, ошибка, которую вы получаете, предполагает, что тип
parent
на самом деле неNodeInternal
является. Нам нужно было бы увидеть больше кода, чтобы быть уверенными.2. Кажется, самым простым объяснением является то, что у вас ошибка, и
parent instanceof NodeLead<?>
это правда. Как вы это исключили?3. Я должен был бы согласиться, что
parent
этоNodeLeaf
.4. Да, это было так! Я получил parent, чтобы быть экземпляром NodeInternal, исправил это. Спасибо, ребята. Вы можете добавить ответ ниже, и я отмечу его как правильный ответ.
Ответ №1:
Ну, я думаю, я прокомментировал первым, так что я сделаю честь 🙂
Объяснение parent
заключается в том, что на самом деле это класс NodeLeaf
, а не NodeInternal
.