Eclipse - 查找特定类及其所有子类中的引用

3

我需要在特定类型层次结构中查找对外部方法Foo.getInstance()的引用,基本上我想将搜索结果限制为特定类和所有子类,我不感兴趣所有引用。是否可以使用Eclipse或任何自定义插件来实现?谢谢


你可以通过创建一个仅包含你的层次结构文件的工作集来实现这一点(如果它们在一个包中,这是最简单的方法)。然后使用CTRL+H和Java搜索范围(工作集)。如果所有类都在一个包中,你可以在项目资源管理器中选择该包,然后执行Java搜索并选择“选定”的范围。 - BigMike
1
@BigMike:请把这个变成答案。 - Chris Gerken
2个回答

2
你可以创建一个只包含层次结构文件的工作集来实现此操作。然后使用“CTRL+H”和Java搜索,范围为“工作集”。 如果所有类都在一个包中,您可以在“项目资源管理器”中选择该包,然后使用“选定”的Java搜索。 工作集非常棒。

1
是的,但是如果某些子类不在该包之内,你如何实现原始目标呢?我有什么遗漏了吗? - thermz
工作集可能包含不同的文件(跨不同的项目)。如果类位于不同的包中,只需将需要监视的每个文件添加到工作集中。据我所知,在Eclipse中定义的工作集数量没有限制。但是,如果层次结构仅在一个包中,则通过Java搜索对话框中的选择范围在所选项内进行搜索更简单。 - BigMike
没问题。也许楼主想要在当前工作集的所有子类中自动查找引用,而不手动指定要搜索和不要搜索的位置。无论如何,我认为你的答案是唯一可行的方式... 就我所知。 - thermz
还有层次结构视图,但它也是完全基于类路径范围的,以及“查找所有引用”(ctrl+shift+g)命令。我在我的项目中大量使用工作集来保持一切清洁,一旦习惯了,它可以节省大量时间。特别是现在我正在处理一个近百万行代码的遗留项目,由那些将Java用作PHP的人编写。 - BigMike
可能这是唯一的方法,但我仍在寻找某种插件,可以允许这样做,而不想创建工作集。无论如何,IDEA已经默认具备了这个功能。 - Andrey Borisov
会尝试深入挖掘一下,也许已经有相关的东西了。编写一个简单的Java搜索扩展程序来选择类应该不难。 - BigMike

0

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

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

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

如果结果太多而无法过滤,则可以将其复制到文件编辑器中,并使用子类名称(ClassB)作为搜索关键字,每行包含classB的内容都是对classB对象调用methodA的潜在结果。

注意:如果方法签名使用classA对象引用,并且在体内进行类型转换为classB,则需要选择该条目而不是删除它。我还建议使用上面提到的工作集方法。这是问题的另一种替代方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接