2012-03-28 61 views
12
abstract class Base {} 

class A extends Base 
class B extends Base 

如何查找创建Base的代码中的所有地方? (即有新的A()或新的B())intellij想法:如何找到所有实例创建的类

更新:说清楚,以上只是举例而已。我对搜索任何类的对象创建感兴趣,包括我不控制的第三方类。

回答

15

使用结构搜索(编辑 - >查找 - >搜索结构上或按Ctrl + Shift + S):

  • 创建模板:new $Type$($P$)
  • 编辑类型变量:型基在文本字段中选中'在类型层次结构中应用约束',选中'此变量是搜索的目标'
  • 在文本字段中编辑P变量:type。*,设置Minimum count为0, 。

瞧!

+1

对于未来的人们 - 结构搜索仅适用于IntelliJ Ultimate版本。 – Vic 2012-07-05 08:33:48

+1

这也适用于社区版的14 EAP(建立IC-138.2210.3。我不知道它是否会在终极版中被取出14。 – yshavit 2014-10-15 19:08:05

0

您可以创建Base的空默认构造函数并按Ctrl + Alt + H(层次结构调用者)。然后你会看到A和B的所有作品都像树一样。

+0

查看我的更新 – IttayD 2012-03-29 06:19:01

4

IttayD如果我已经正确理解了你的最新更新,通常我会做的(IntelliJ 9.0.4),如果我有类似的需求给你的是右键点击类名并做“Find Usages”,这将列出结果在使用类的形式,

  • 变量声明
  • 新实例的创建,仅举几例。

据我所知,我不认为有一个具体的选项/选择选择来完成这样的用法搜索检查。由于

enter image description here

+1

查找用法仅返回创建该类的实例,而不是此类(或特征)的子类 – IttayD 2012-04-01 06:23:39

+0

@IttayD查找用法“抽象”类的实例化子类应列在“局部变量声明'为例如我确实试过了,它列出了所有初始化的子类。也许你可以粘贴一些例如你有没有找到使用下列出的代码。谢谢 – MalsR 2012-04-01 12:36:19