1

一部のクラスのシリアライザーを作成するために、Javaの注釈処理メカニズムを使用しています。
現在処理されているクラスの各フィールドをチェックして、それがのサブクラスであることを確認したいと思いますMyBaseSerializableClass
私の問題は、フィールドタイプの直接のスーパークラスを見つける方法しか知らないということです。

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

superClassTypeのスーパークラスを見つけて、ヒットするまで継承ツリーを上っていくにはどうすればよいObjectですか?

4

1 に答える 1

6

これが最善の方法かどうかはわかりませんが、これが私が見つけた解決策です。

Types typeUtils = processingEnv.getTypeUtils();
while (!typeElement.toString().equals(Object.class.getName())) {
        element = (TypeElement)typeUtils.asElement(element.getSuperclass());
        // do whatever with element
}
于 2013-01-30T15:49:06.183 に答える