Мне нужен слушатель, который может уведомить, не PsiElement не vaild. PsiTreeChangeListener, похоже, не подходит для этого. Есть ли другие слушатели, которые могут это сказать. Или мне нужно создать слушателя? Как создать этот слушатель?Слушатель изменений PSI
0
A
ответ
0
Для создания и обслуживания списка элементов psi можно использовать класс SmartPsiElementPointer.
SmartPsiElementPointer является указателем на PsiElement, который не становится недействительным, даже если пси элемент он указывает был удален. В этом случае это getElement() метод просто вернет null. Вы можете обнаружить и обработать это.
Чтобы обернуть элемент в SmartPsiElementPointer вы можете использовать следующий код:
SmartPointerManager.getInstance(element.getProject()).createSmartPsiElementPointer(element);
я не уверен, что это возможно, и/или необходимости. Не могли бы вы рассказать нам, чего вы хотите достичь? – Argb32
В начале я получил все необходимые psiElements, но если между кем-то комментировать или удалять или перемещать любой psiElement, то psiElement станет недействительным или null. поэтому я хотел знать в то время и в соответствии с этим хочу обновить список всех psiElements. Я думал о внедрении шаблона наблюдателя в этом случае, но для этого мне нужен слушатель. поэтому, если какой-либо psiElement станет недействительным из этого списка, тогда список узнает и удалит этот элемент из этого списка. Я не понимаю, как мне реализовать этот слушатель. – Aarti