Дженерики и использование ‘instanceof’

#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 .