Перечисления и AspectJ — getEnumConstants() возвращают нуль

#java #enums #aspectj

#java #перечисления #aspectj

Вопрос:

Используя AspectJ с перечислениями, я получаю следующие результаты:

 public enum EnumName { B, L, A }

EnumName.class.isEnum() : true
EnumName.class.getEnumConstants() : null
  

Если я не запускаю (во время компиляции) свой проект, getEnumConstants() работает так, как ожидалось.

Почему это происходит? Я не нашел никакой информации в Google об этом, я пытался декомпилировать сгенерированные классы, но я не получил оттуда никакой информации. Это заставляет меня прекратить использование AspectJ, если он продолжает что-то путать.

Ответ №1:

Я снова получил свой ответ из списка рассылки AspectJ. Проблема заключалась в том, что у меня было исключение NPE в моем совете из-за вызова joinPoint.getThis().getName(), getThis() в статических методах возвращает null. getEnumConstants() проглотил исключение и просто вернул null.