Процессор аннотаций Java: проверьте, реализует ли TypeMirror определенный интерфейс

Я работаю с процессором аннотаций Java. Моя аннотация,@foo используется для пометки переменных поля, которые могут быть прочитаны в файл или из файла во время выполнения. Тем не менее, я хотел бы проверить, реализует ли тип переменнойSerializable во время компиляции, так что если поле не сериализуемо, я могу выдать предупреждение / ошибку во время компиляции.

(Мне не нужно на самом деле проверять, сериализуем ли объект, если он реализуетSerializable Интерфейс я буду доверять).

Я выяснил, как делать другие вещи, но я не могу понять, как проверить, реализует ли элементSerializable, Я могу использоватьTypeElement#getInterfaces метод, но я не могу понять, как проверить, если какой-либо из этихTypeMirrorвозвращается один дляSerializable.

Кроме того, если кто-то знает что-то хорошееjava.lang.model или учебники по аннотациям Java, которые также будут полезны.

Редактировать: я пробовал это ...

isSerializable = false  
for(TypeMirror tm : processingEnv.getTypeUtils().directSupertypes(em.asType()))  
{  
if(isSerializable = "java.io.Serializable".equals(tm.toString()))  
{  
break;  
}  
}  

Это работает хорошо для String и Character, которые непосредственно реализуютSerializable, но для Integer, который наследует Serializable от суперкласса Number, он не работает.

Ответы на вопрос(1)

Ваш ответ на вопрос