有没有办法在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)。
我想要的是根据包名和访问修饰符过滤这种深层次的层次结构。
答案 0 :(得分:1)
我不确定你到底想要实现什么,因为你在谈论“生成类层次结构”,然后你在谈论“只显示公共项目”。
我假设您要导航到Hirarchy工具窗口(通过在所选类型上按 CTRL-H )并过滤结果,以便只显示所需包中的类型(java.*
)将被显示。
要实现这一点,在工具栏上的Hirarchy工具窗口中有一个“Scope
”ComboBox。单击它并选择“Configure...
”。将出现“Scopes
”窗口,您可以在其中添加和配置新的自定义范围,该范围将为您过滤所需的类型。
编辑: 我在scope languge syntax reference中找不到任何基于访问修饰符的过滤选项。
但我已经搜索了一下,我认为您可能正在寻找Structural Search
( CTRL + SHIFT + S )。你也可以在这里使用如上所述的“范围”,并使用这样的访问修饰符:
public class $ DerivedClass $实现Entry {}
或
私有类$ DerivedClass $实现Entry {}
我没有太多使用它,但它可能是一个非常强大的工具,可以帮助你获得比Hirarchy Tool Window更好的结果。