2015-07-27 1 views
1

Пример кода:ASTParser - MethodInvocation - Как определить статический метод обработки вызовов

String.valueOf("test"); 

И посетителя для этого кода:

cu.accept(new ASTVisitor() 
{ 
    public boolean visit(MethodInvocation inv) 
    {    
     System.out.println(inv); 
     System.out.println(inv.getExpression().getClass()); 
     return true; 
    } 
}); 

Выход:

String.valueOf("test") 
class org.eclipse.jdt.core.dom.SimpleName 

Но нестатическая вызов также возвращает SimpleName.

Во-вторых, я попытался получить resolveMethodBinding(), но здесь нет методов, которые могут помочь мне обнаружить, что это статический метод или нет.

Знает ли кто-нибудь об этом? Благодаря

ответ

2

Вы должны строить AST с креплениями доступными, а затем вызвать:

IMethodBinding binding = inv.resolveMethodBinding(); 
if (binding.getModifiers() & Modifier.STATIC > 0) { 
    // method is static method 
} else { 
    // method is not static 
} 
+0

Где вы получаете Модификаторы от? Это не похоже на класс из API JDT –

+0

Извините, случайные дополнительные '' '. Класс - это 'java.lang.reflect.Modifier' –

 Смежные вопросы

  • Нет связанных вопросов^_^