オブジェクトが実行時に不変であるかどうかを確認するための注釈を書き込もうとしています。そのために、オブジェクトのクラスがfinalであるかどうかを確認し、次にそのすべての属性もfinalであるかどうかを確認します。次に、プリミティブ型でない場合は、各フィールドの型について同じことを再帰的にチェックしたいと思います。
ここにコードがあります:
for (Element subElement : element.getEnclosedElements()) {
if (subElement.getKind().isField()) {
isFinal=false;
for(Modifier modifier : subElement.getModifiers()) {
if (modifier.equals(Modifier.FINAL)) {
isFinal=true;
break;
}
}
if (!isFinal) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Field "+element+" is not immutable because it is not final");
} else {
// Here I want to restart my method recursively
}
}
}
自分のフィールドのタイプでメソッドを最初からやり直すにはどうすればよいですか?ここにあるフィールドのタイプを取得するにはどうすればよいjavax.lang.model.element.Element
ですか?
編集:包含クラスで宣言されている型が必要です。これは、あらゆる種類の可変性を回避するために最終クラスである必要があります。