Java eclipse—仅在特定类和该类的所有子类中查找引用

Java eclipse—仅在特定类和该类的所有子类中查找引用,java,eclipse,Java,Eclipse,我需要在特定的类型层次结构中找到对外部方法的引用,比如Foo.getInstance(),基本上我想把搜索结果限制在特定的类和所有的子类中,我对所有的引用都不感兴趣。可以使用eclipse或任何自定义插件吗?谢谢您可以创建一个工作集,其中只包含保存您的层次结构的文件。 然后CTRL+H和Java搜索范围为“工作集” 如果这些类都在一个包中,那么您可以在ProjectExplorer中选择它们,然后在作用域为“Selected”的情况下执行Java搜索 工作集非常棒我已经找到了一种解决方法。需要查

我需要在特定的类型层次结构中找到对外部方法的引用,比如Foo.getInstance(),基本上我想把搜索结果限制在特定的类和所有的子类中,我对所有的引用都不感兴趣。可以使用eclipse或任何自定义插件吗?谢谢

您可以创建一个工作集,其中只包含保存您的层次结构的文件。 然后
CTRL+H
和Java搜索范围为“工作集”

如果这些类都在一个包中,那么您可以在ProjectExplorer中选择它们,然后在作用域为“Selected”的情况下执行Java搜索


工作集非常棒

我已经找到了一种解决方法。需要查看eclipse搜索结果(在“显示为列表”模式下)

例如,ClassA有几个子类(ClassB,C..Z),它们继承了在类A上定义的methodA并调用它们

在eclipse中执行方法引用,并使用右上角显示的三角形/视图菜单将视图更改为“显示为列表”。这将列出包含超类/子类引用的方法签名,以便您可以轻松地从搜索结果中选择或删除

如果有太多的结果需要过滤,您可以将其复制到文件编辑器中,并使用子类名称(ClassB)的搜索关键字,并且包含ClassB的每一行都是一个潜在的结果,它在ClassB对象上调用methodA


注意:若方法签名使用classA对象引用,并且在主体中它的类型强制转换为classB,那个么您需要选择该条目,而不是删除它。我还推荐上面提到的工作集方法。这是回答问题的另一种方法。

您可以这样做,即创建一个工作集,其中只包含保存您的层次结构的文件(如果它们在包中,这是最简单的方法)。然后使用CTRL+H和Java搜索范围(工作集)。如果这些类都在一个包中,那么您可以在Project Explorer中选择它们,然后在作用域为“Selected”的情况下执行Java搜索。@BigMike:回答这个问题。是的,但是如果某些子类在该包之外,您如何实现O.P.目标?我遗漏了什么吗?工作集可能包含不同的文件(跨不同的项目)。如果类驻留在不同的包中,只需将需要监视的每个文件添加到ws。顺便说一句,您可以在eclipse中定义的工作集数量没有限制。但是,如果层次结构仅在一个包中,则在选定项中搜索(通过java搜索对话框中的选定范围)会更简单。也许OP希望在当前工作集中的所有子类中自动查找引用,而无需手动指定要搜索的位置和不搜索的位置。无论如何,我认为你的答案是唯一可能的办法。。AFAIKthere也是hierarchy视图,但它是完整的类路径范围,以及“findallref.”(ctrl+shift+g)命令。我在项目中大量使用工作集来保持一切整洁,一旦习惯了,就可以节省大量时间。特别是现在,我正在从事一个将近百万行代码的遗留项目,该项目由使用java的人编写,就像使用PHP一样……也许这是唯一的一种方法,但我仍然在寻找某种插件,允许这样做,并且不想创建工作集。无论如何,IDEA具有这种开箱即用的功能。