要查看一个接口的所有实现很容易,只需要在Idea中使用"Find Usages"(查找引用)功能即可。下面从多个方面进行详细阐述。
一、使用"Find Usages"功能
首先,在接口的定义处按Ctrl+B或者鼠标右键选择"Go to -> Implementation(s)",或者在Idea主界面使用"Find Usages"功能。此时Idea会显示出所有实现了该接口的类。
public interface DemoInterface {
public void sayHello();
}
public class DemoClass1 implements DemoInterface {
public void sayHello(){
System.out.println("Hello from DemoClass1!");
}
}
public class DemoClass2 implements DemoInterface {
public void sayHello(){
System.out.println("Hello from DemoClass2!");
}
}
二、使用快捷键
Idea提供了多个快捷键方便我们查看接口的所有实现。如下:
- Ctrl+B 或者 Ctrl+鼠标左键双击 - 查看定义或者实现的源代码
- Alt+F7 - 查找选中的元素在项目中的引用
- Ctrl+Shift+F7 - 高亮当前元素在文件中的所有使用
- Ctrl+Alt+B - 查找选中的元素的实现
三、查看接口子类的实现
如果接口被继承,我们也可以通过查找子类来查看接口的所有实现。如下代码:
public interface DemoInterface {
public void sayHello();
}
public interface ChildInterface extends DemoInterface {
public void childMethod();
}
public class DemoClass1 implements ChildInterface {
public void sayHello(){
System.out.println("Hello from DemoClass1!");
}
public void childMethod(){
System.out.println("I am childMethod in DemoClass1!");
}
}
public class DemoClass2 implements ChildInterface {
public void sayHello(){
System.out.println("Hello from DemoClass2!");
}
public void childMethod(){
System.out.println("I am childMethod in DemoClass2!");
}
}
如果我们要查看ChildInterface的所有实现,则只需要在该接口的定义处使用"Find Usages"功能即可。
四、查看库的实现
有时候我们不仅需要查看项目中接口的所有实现,还需要查看库中的实现。这时候可以使用Idea提供的"View | Show Implementations"功能。如下代码:
import com.intellij.openapi.util.TextRange;
import org.jetbrains.annotations.NotNull;
public interface CustomHighlighter {
void highlight(@NotNull TextRange range, @NotNull HighlightSeverity severity, @NotNull String message);
}
如果我们要查看CustomHighlighter接口在IntelliJ IDEA库中的所有实现,则只需要在该接口的定义处按Ctrl+Alt+F7即可。
五、使用"Method Hierarchy"功能
Idea还提供了"Method Hierarchy"(方法继承关系)功能,可以帮助我们查看一个方法的所有实现。方法如下:
public interface DemoInterface {
void method1();
}
public abstract class DemoAbstract implements DemoInterface {
public void method1() {}
abstract void method2();
}
public class DemoSubClass extends DemoAbstract {
public void method2() {}
}
如果我们要查看DemoAbstract的method1方法的所有实现,则只需在method1方法名上按Ctrl+H即可。