1. 方法是否是实现重写
public static boolean methodIsImplemented(IMethodBinding methodBinding){
ITypeBinding typeBinding = methodBinding.getDeclaringClass();
List<IMethodBinding> allIMethodBindings = new ArrayList<IMethodBinding>();//存放所有实现类的方法,用于和指定方法比较
//找所有实现的方法
for(ITypeBinding impledITypeBinding : typeBinding.getInterfaces()){
for(IMethodBinding binding : impledITypeBinding.getDeclaredMethods()){
allIMethodBindings.add(binding);
}
}
for(IMethodBinding mBinding : allIMethodBindings){
if(methodBinding.overrides(mBinding)){
return true;
}
}
return false;
}
2. 方法是否是继承重写
public static boolean methodIsOverride(IMethodBinding methodBinding){
ITypeBinding typeBinding2 = methodBinding.getDeclaringClass();
List<IMethodBinding> allIMethodBindings = new ArrayList<IMethodBinding>();//存放所有父类的方法,用于和指定方法比较
//找所有父类的方法
while(typeBinding2.getSuperclass() != null){
ITypeBinding superITypeBinding = typeBinding2.getSuperclass();
for(IMethodBinding binding : superITypeBinding.getDeclaredMethods()){
allIMethodBindings.add(binding);
}
typeBinding2 = superITypeBinding;
}
for(IMethodBinding mBinding : allIMethodBindings){
if(methodBinding.overrides(mBinding)){
return true;
}
}
return false;
}
static boolean isRecursive = false;
public static boolean methodIsRecursive(MethodDeclaration methodDeclaration){
final IMethod method = (IMethod)methodDeclaration.resolveBinding().getJavaElement();
//判断是否是递归
methodDeclaration.accept(new ASTVisitor() {
public boolean visit(MethodInvocation node){
if(node.getName().toString().equals(method.getElementName())){
if(((IMethod)node.resolveMethodBinding().getJavaElement()).equals(method)){
isRecursive = true;
}
}
return true;
}
});
return isRecursive;
}