gpt4 book ai didi

java - 如何确定 Eclipse JDT 中方法或字段的修饰符?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:42 25 4
gpt4 key购买 nike

我正在为 Eclipse JDT 编写一些简单的 AST 访问器。我有一个 MethodVisitorFieldVisitor 类,它们都扩展了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com