我正在尝试编写注释来检查对象在运行时是否不可变。为了做到这一点,我检查对象的类是否是最终的,然后它的所有属性是否也是最终的。然后,如果它不是原始类型,我想递归地检查每个字段的类型。
这里有一段代码:
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
}
}
}
如何让我的方法以我的字段类型重新开始?如何检索字段的类型,这里是 a javax.lang.model.element.Element
?
编辑:我需要包含类中声明的类型,它需要是最终类以避免任何类型的可变性。