在现有代码中为常量创建静态导入的简单方法?

2022-09-01 06:15:11

如果我在 Foo 中有一个常量 BAR,我将在 C 类中使用它,我必须编写

Object o = Foo.BAR + "...";

我可以在Eclipse中使用Ctrl-Shift-M(光标在BAR上)来创建静态导入,如下所示:

import static Foo.BAR;

Object o = BAR + "....";

我目前正在更新遗留代码,其中包含数千个我想转换为静态导入的代码。Ctrl-Shift-O / Organize import 不会这样做。有没有我错过的技巧?


编辑:实际上,我更喜欢一种方式来告诉Eclipse,我想让Ctrl-Shift-M在这个特定类中的所有实例上发挥其魔力,而不仅仅是我放置光标的单个实例。(它是遗留代码,因此这实际上提高了可读性:))


编辑:我发现IntelliJ建议这样做。


答案 1

需要注意的是:过度使用静态导入实际上会使代码的可读性降低(恕我直言),特别是如果常量名称没有明确指示它所属的类或枚举。您还可以从听起来相似甚至具有相同名称的不同类/枚举中获取常量名称。

因此,你强迫读者做的是希望他的IDE会告诉他这个类(比如说,通过一个工具提示),或者他们必须导航到它才能找出它是什么。打印输出和代码片段变得不那么可重复。

老实说,由于这些原因,我很少使用静态导入。


答案 2

我不知道任何其他自动重构来做你正在寻找的事情,但是这样做有两个关键方面 - 一个是添加导入,另一个是从常量中删除类名。

为了添加导入,我建议在每个使用它们的文件上粘贴在包之后。import static application.KeyHolder.*;

为了删除类名,在 eclipse 中执行 Java 搜索并搜索字段。然后,您可以查找/替换“KeyHolder”,并替换为“”。为了防止不匹配,请确保替换的项目计数等于该文件的匹配项数。另外,请确保向下搜索并在导入后开始。KeyHolder.*


推荐