代码重构 & JDT判断一个方法是否是实现重写,继承重写和递归
Posted 同学少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码重构 & JDT判断一个方法是否是实现重写,继承重写和递归相关的知识,希望对你有一定的参考价值。
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;
以上是关于代码重构 & JDT判断一个方法是否是实现重写,继承重写和递归的主要内容,如果未能解决你的问题,请参考以下文章
代码重构 & JDT编程实现全部代码修改撤销(包括重构且不弹出确认框)
代码重构 & JDT遍历AST,获取每个节点的所有直接子节点
代码重构 & JDT遍历AST,获取每个节点的所有直接子节点