如何识别实现不扩展某些基类的特定接口的所有类?

时间:2019-06-19 09:17:20

标签: java intellij-idea

我有一些接口Action,实现该接口的大多数类都是从某个基础AbstractAction派生的。但是我假设有一些实现该接口的类,但是并没有扩展该基类。

是否可以使用IntelliJ识别此类? (理想情况下:使用社区版)

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

1 个答案:

答案 0 :(得分:3)

仅在 Intellij IDEA Ultimate Edition 中工作:
我唯一想直接使用Intellij IDEA解决问题的方法就是生成Action接口的uml class diagramm

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

下面以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