Eclipse的Organize Import(ctrl+shift+o)命令对静态导入的处理是否可以修改?

39

我经常使用Eclipse的快捷键Ctrl + Shift + O(组织导入)。

但是,它有一个特别让人烦恼的行为:

如果我有任何静态导入,例如:

import static java.lang.Math.*;

使用“Organize Imports”功能后,它会“友好地”用实际使用的字段和方法替换静态导入。例如:

import static java.lang.Math.PI;
import static java.lang.Math.cos;

有没有办法仅从“Organize Imports”中删除此行为?


我知道使用静态导入*会污染我的类命名空间,可能会有很多未使用的绑定,并且静态导入可能会使代码不够易读。尽管如此,我仍然想在Eclipse中找出如何做到这一点。 - ulmangt
1
我通常只需键入例如“Math.PI”,然后按Ctrl-Alt-M,这将创建静态导入。您只需要执行一次静态导入即可。 - Thorbjørn Ravn Andersen
为什么这很重要?我猜你在问关于“我目前正在使用的字段和方法”,并且你想要能够使用 sin 而不需要输入 Math,Ctrl + Shift + O,Ctrl + S,.sin,Ctrl + Space,left,left,Ctrl + Alt + M。 - Stephen
有趣的是,我不知道Ctrl-Alt-M。虽然不完全符合我的要求,但它确实很接近。 - ulmangt
1
@Stephen 这只是一种方便的做法。我有一个类,其中包含许多静态字段,我可能需要使用它们中的所有字段。我想简单地添加该类的静态导入,然后忘记它,从而使我可以仅通过名称使用这些字段(无需使用键盘快捷键)。但是,我偶尔会使用ctrl+shift+o来清理未使用的导入等...当我这样做时,它会删除我的静态导入 - ulmangt
在Eclipse Kepler中,Ctrl+Alt+M只会为我添加一个新行。我该如何使用它来获得很酷的静态导入功能呢? - 11101101b
1个回答

52
当然:Window -> Preferences -> Java -> Code Style -> Organize Imports。 将"Number of static imports needed for .*"的值调整为1,它将始终使用.*。当然,这并不完全意味着说“只需保留静态导入”,但希望这正是您想要的。 基本上,该数字表示“如果我导入这么多项,则使用此导入的所有方法或字段”。所以,如果数字为2,则只有在您使用两个或更多的导入时才会添加星号。这将解决您在响应中提到的问题。

谢谢!你说得对,这并不完全相同,因为现在它会将我所拥有的任何显式静态导入转换为 .* 导入。话虽如此,我认为它对我的目的来说是可行的。 - ulmangt
3
很不好。我真的不想在我的代码中将随机的静态导入更改为*,我只想让我的测试都使用Assert.*和Mockito.*。 - mjaggard

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