java - 如何识别所有实现特定接口(interface)但不扩展某些基类的类?

标签 java intellij-idea

我有一些接口(interface)Action,大多数实现该接口(interface)的类都派生自一些基类AbstractAction。但我假设有一些类实现了该接口(interface),但没有扩展该基类。

有没有办法使用 IntelliJ 来识别此类? (理想情况下:使用社区版)

编辑:这不是 How to show all parents and subclasses of a class in IntelliJ IDEA? 的副本,因为我希望结合“实现 X 而不是扩展 Y”之类的条件。

最佳答案

仅适用于 Intellij IDEA 终极版:
我想到的唯一可以直接使用 Intellij IDEA 解决您的问题的方法是生成 uml class diagramm Action 界面。

这让您可以直观地搜索层次结构模式。

下面是 JTextComponent 的图表示例:

enter image description here

另一种方法 - 为工作使用正确的工具

jqassistant是一种分析您的 Java 代码及其关系并将其存储到 Neo4j 数据库中的工具。 这使您能够将问题描述为图形查询 cypher .

最简单的开始方式是

例子: 查找所有实现 aInteface 的类的查询看起来像

MATCH (i:Interface {name:"aIntefaces"}  )<-[:IMPLEMENTS]- (c) RETURN i,c

对您的问题的查询如下所示:

MATCH 
   (i:Interface {name:'Action'}  )<-[:IMPLEMENTS|EXTENDS*1..10]- (class), 
   (abstractAction:Class {name:'AbstractAction'}) 
   where not (class)-->(abstractAction)   
RETURN class

关于java - 如何识别所有实现特定接口(interface)但不扩展某些基类的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664166/

相关文章:

intellij-idea - 在 INTELLIJ IDEA IDE 的主类中为创建的对象生成 setter

java - 启动嵌入式 Jetty 不起作用,SLF4J 响应错误

java - 运行后JFrame显示不正确

java - 如何在黑莓屏幕上渲染网页内容?

java - 在Windows 7和JAVA 64位上使用zxing

java - Android Spring 集成

java - Android:从未使用过 IntelliJ IDEA 12.1 参数 View

java - 无法使用 JDBC 驱动程序和 sql2o 连接到我的 Posgres 服务器

java - 将 JSpinner 的日期值转换为整数

version-control - IntelliJ IDEA 中的专用库文件夹