当前位置:  开发笔记 > 编程语言 > 正文

如何在项目中搜索返回Collection接口实现的所有方法?

如何解决《如何在项目中搜索返回Collection接口实现的所有方法?》经验,为你挑选了2个好方法。

我一直在阅读Josh Bloch的"Effective Java 2nd Edition".第43项声明'返回空数组或集合,而不是空值'.我的问题是如何在项目中搜索返回java.util.Collection接口实现的所有方法?使用的IDE是Eclipse,但任何找到正确结果的方法都是可以接受的,例如正则表达式或其他一些IDE.



1> Boris Pavlov..:

在Eclipse帮助中找到了这个:

要搜索具有特定返回类型的方法,请使用"*",如下所示:

    打开搜索对话框,然后单击Java Search选项卡.

    在"搜索"字符串中键入"*"和返回类型(以空格分隔).

    选择区分大小写复选框.

    选择"方法和声明",然后单击"搜索".

它可以帮助查找返回特定类型的所有方法,但不能查找某些接口的实现.



2> 小智..:

谢谢你提到SemmleCode.要查找源中返回java.util.Collection子类型的所有方法,请编写:

import default

class CollectionType extends RefType {
  CollectionType() {
    this.getASupertype*().hasQualifiedName("java.util","Collection")
  }
}

from Method m
where m.getType() instanceof CollectionType
      and
      m.fromSource()
select m

也就是说,我们首先定义CollectionType的含义:将java.util.Collection作为超类型的所有类型.getASupertype背后有一颗星,因为我们想要将该操作应用零次或多次.接下来,我们只选择那些返回类型为CollectionType且在源中出现的方法.

继续,尝试一下:-)这是一个简单的练习,进一步细化查询到那些应该返回CollectionType但可能返回null的方法.所有这些都可以交互式完成,在您开发查询时自动完成,并持续检查以帮助您正确完成.您可以通过多种不同方式查看结果,并轻松地在分析结果和代码之间导航.

-Oege [披露:我是Semmle的首席执行官]

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有