【代码重构 & JDT】判断一个方法是否是实现重写,继承重写和递归

来源:互联网 发布:c语言调用lib 编辑:程序博客网 时间:2024/06/05 02:34

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;}



3. 方法是否是递归

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;}





阅读全文
0 0
原创粉丝点击