IntelliJ IDEA过滤器层次结构子类型

时间:2014-11-06 22:04:58

标签: java intellij-idea hierarchy

有没有办法在IntelliJ Idea中过滤层次结构子类型?

例如,我想为java.util.Map.Entry<K, V>生成类层次结构,但是只想显示驻留在java.*包中的公共类和类。

Eclipse似乎也不支持这一点,我看不到从IDE UI直接执行此操作的方法,所以有没有办法实现这一点,或者可能在IDEA中编写脚本?

编辑:为了澄清事情,我想找到JDK中是否已经有Entry<K, V>的简单公共实现,这样我就不需要编写自己的简洁代码了。

原来有两个好的候选人(SimpleEntry<K, V>SimpleImmutableEntry<K, V>,对于那些可能感兴趣的人)但我只是经过一些艰苦的筛选{{1}的无数实施后才设法找到它们在我的类路径上(见here)。

我想要的是根据包名和访问修饰符过滤这种深层次的层次结构。

1 个答案:

答案 0 :(得分:1)

我不确定你到底想要实现什么,因为你在谈论“生成类层次结构”,然后你在谈论“只显示公共项目”。

我假设您要导航到Hirarchy工具窗口(通过在所选类型上按​​ CTRL-H )并过滤结果,以便只显示所需包中的类型(java.* )将被显示。

要实现这一点,在工具栏上的Hirarchy工具窗口中有一个“Scope”ComboBox。单击它并选择“Configure...”。将出现“Scopes”窗口,您可以在其中添加和配置新的自定义范围,该范围将为您过滤所需的类型。

enter image description here

编辑: 我在scope languge syntax reference中找不到任何基于访问修饰符的过滤选项。

但我已经搜索了一下,我认为您可能正在寻找Structural Search CTRL + SHIFT + S )。你也可以在这里使用如上所述的“范围”,并使用这样的访问修饰符:

  

public class $ DerivedClass $实现Entry {}

  

私有类$ DerivedClass $实现Entry {}

我没有太多使用它,但它可能是一个非常强大的工具,可以帮助你获得比Hirarchy Tool Window更好的结果。

参考:hereherehere