Как определить модификаторы для метода или поля в Eclipse JDT? - PullRequest
3 голосов
/ 20 января 2012

Я пишу несколько простых посетителей AST для Eclipse JDT.У меня есть классы MethodVisitor и FieldVisitor, каждый из которых расширяет ASTVisitor.Возьмите MethodVisitor например.В этом методе класса Visit (который является переопределением) я могу найти каждый из узлов MethodDeclaration.Когда у меня есть один из этих узлов, я хочу посмотреть на его Modifiers, чтобы увидеть, является ли он public или private (и, возможно, другими модификаторами также).Существует метод, называемый getModifiers(), но мне неясно, как его использовать для определения типа модификатора, примененного к конкретному MethodDeclaration.Мой код опубликован ниже, пожалуйста, дайте мне знать, если у вас есть какие-либо идеи, как действовать.

Ответы [ 2 ]

11 голосов
/ 20 января 2012

Как указано в документации, результатом вызова 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
}
0 голосов
/ 17 августа 2017

Есть еще один вспомогательный метод modifiers(), который дает вам список модификаторов, которые есть у вашего метода. Чтобы проверить, является ли это final или нет, вы можете непосредственно проверить в этом списке.

for(Object o : methodDeclarationNode.modifiers()) {  
   if(o.toString().equals("final")) {
      return true;
   }
}
...