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

Tho*_*sen 37 java eclipse

如果我在Foo中有一个恒定的BAR,我将在C类中使用它,我将不得不写

Object o = Foo.BAR + "...";
Run Code Online (Sandbox Code Playgroud)

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

import static Foo.BAR;

Object o = BAR + "....";
Run Code Online (Sandbox Code Playgroud)

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


编辑:实际上,我更喜欢的是告诉Eclipse我想让Ctrl-Shift-M在这个特定类中的所有实例上做它的魔力,而不仅仅是我放置光标的单个实例.(这是遗留代码所以这实际上提高了可读性:))


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

cle*_*tus 11

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

所以你强迫读者做的是希望他的IDE会告诉他课程(通过工具提示),或者他们必须导航到它以找出它是什么.打印输出和代码片段变得更少可重复.

老实说,出于这些原因,我极少使用静态导入.

  • 当问题是"我如何使用静态导入进行此操作"时,我不认为"不使用静态导入"是一个值得投票的答案. (35认同)
  • 有许多流畅的库,其中静态导入对于可读性至关重要(例如Mockito,Hamcrest,Fest).在这些情况下,我使用eclipse收藏夹轻松管理静态导入,但是转换类中所有限定实例的方法肯定会很有用. (6认同)
  • 保护人们免受善意但误导的目的是回答问题的历史悠久的技巧. (4认同)