【代码重构 & JDT】判断一个方法是否是实现重写,继承重写和递归
2017-07-06 15:07
781 查看
1. 方法是否是实现重写
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;
}
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;
}
相关文章推荐
- 用递归实现判断一个字符串是否是回文的方法
- 10_9_2从类MyClass中派生一个类MyDervedClass,重写GetString(),使用该方法的基类实现代码从基类中返回一个字符串,但在返回的字符串中添加文本"(output fro)"
- 用递归实现判断一个字符串是否是回文的方法
- 判断一个对象是否实现了某方法,而非继承而来
- 【代码重构 & JDT】判断一个类IType是否有子类
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- java中如何判断一个子类方法是否已经被重写
- JavaScript判断一个URL链接是否有效的实现方法
- Shell脚本实现判断IP地址是否在一个ip段内代码分享
- 递归与非递归方式判断二叉树是否对称&& 按行打印二叉树【java实现】
- 判断某个类是否实现了某个接口或者继承了某个父类的方法
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 用递归判断一个数组是否递增 JAVA代码
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- (转)判断一个字符串是否全是数字的多种方法及其性能比较(C#实现
- 用类的继承关系(重写父类的方法)实现简易后台代码模板
- as3 判断,某个类是否继承于某个类,某个类是否实现某个接口的方法
- C#实现判断一个时间点是否位于给定时间区间的方法
- JavaScript判断一个URL链接是否有效的实现方法