package jdepend.knowledge.pattern.impl2.feature; import jdepend.knowledge.pattern.impl2.AbstractFeature; import jdepend.knowledge.pattern.impl2.FeatureCheckContext; import jdepend.metadata.InvokeItem; import jdepend.metadata.JavaClass; import jdepend.metadata.Method; public class AdapterClassFeature extends AbstractFeature { @Override protected boolean have(FeatureCheckContext context) { if (context.getInterfaces() != null && context.getSupers() != null) { JavaClass theInterfaceClass; JavaClass theSuperClass; for (Method method : context.getCurrent().getOverrideMethods()) { for (Method overrideMethod : context.getCurrent().getOverridedMethods(method)) { theInterfaceClass = overrideMethod.getJavaClass(); if (context.getInterfaces().contains(theInterfaceClass)) { for (InvokeItem item : method.getInvokeItems()) { theSuperClass = item.getCallee().getJavaClass(); if (context.getSupers().contains(theSuperClass)) { if (!theSuperClass.getSupers().contains(theInterfaceClass)) { this.setPatternInfo(method.getName()); return true; } } } } } } return false; } else { return false; } } @Override public String getName() { return "在实现的接口方法中调用了继承的父类方法 父类与接口没有实现关系"; } }