2013-01-24 1 views
1

저는 Java의 Annotation Processing 메커니즘을 사용하여 일부 클래스의 serializer를 만듭니다.
현재 처리중인 클래스의 각 필드를 확인하고 서브 클래스가 MyBaseSerializableClass인지 확인하고 싶습니다. 내가 superClassType의 슈퍼 클래스를 발견하고 난 Object을 명중 할 때까지 상속 트리를 계속 수있는 방법TypeMirror 객체의 계층 트리를 위로 올라가는 방법은 무엇입니까?

TypeElement fieldType = (TypeElement)element; 
TypeMirror superClassType = fieldType.getSuperclass(); 

:
내 문제는 내가 단지 필드 유형의 직접적인 슈퍼 클래스를 찾는 방법을 알고있다?

답변

5

이 최선의 방법 인 경우 잘 모르겠어요하지만 내가 볼 수있는 솔루션입니다 :

Types typeUtils = processingEnv.getTypeUtils(); 
while (!typeElement.toString().equals(Object.class.getName())) { 
     element = (TypeElement)typeUtils.asElement(element.getSuperclass()); 
     // do whatever with element 
}