我正在为 Eclipse JDT 编写一些简单的 AST 访问器。我有一个 MethodVisitor
和 FieldVisitor
类,它们都扩展了 ASTVisitor
。以 MethodVisitor
为例。在那个类的 Visit
方法(这是一个覆盖)中,我能够找到每个 MethodDeclaration
节点。当我有这些节点之一时,我想查看它的 Modifiers
以查看它是 public
还是 private
(也许还有其他修饰符出色地)。有一个名为 getModifiers()
的方法,但我不清楚如何使用它来确定应用于特定 MethodDeclaration
的修饰符类型。我的代码发布在下面,如果您对如何进行有任何想法,请告诉我。
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.MethodDeclaration;
public class MethodVisitor extends ASTVisitor {
private List<MethodDeclaration> methods;
// Constructor(s)
public MethodVisitor() {
this.methods = new ArrayList<MethodDeclaration>();
}
/**
* visit - this overrides the ASTVisitor's visit and allows this
* class to visit MethodDeclaration nodes in the AST.
*/
@Override
public boolean visit(MethodDeclaration node) {
this.methods.add(node);
//*** Not sure what to do at this point ***
int mods = node.getModifiers();
return super.visit(node);
}
/**
* getMethods - this is an accessor methods to get the methods
* visited by this class.
* @return List<MethodDeclaration>
*/
public List<MethodDeclaration> getMethods() {
return this.methods;
}
}
最佳答案
如文档所述,调用 getModifiers()
的结果是相关 Modifier
的按位“或”常数。因此,例如,如果您想了解该方法是否是final
,您可以使用:
int modifiers = node.getModifiers();
if (modifiers & Modifier.FINAL != 0) {
// It's final
}
或者您可以使用 Modifier
类中的便捷方法:
int modifiers = node.getModifiers();
if (Modifier.isFinal(modifiers)) {
// It's final
}
关于java - 如何确定 Eclipse JDT 中方法或字段的修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8945169/