在 Java 中使用 import 语句自动删除显式包声明

2022-09-02 13:33:00

我有一个由其他人创建的项目,其中包含数千个类文件,并且每次引用其任何类时都显式键入包名称。看起来代码是逆向工程的。有没有一个好的Java工具可以重构代码,以便从类引用中删除显式类型的包前缀并移动到import语句中。

提前感谢您。

编辑:

我认为举个例子会有所帮助。我想把进口放在顶部,我不在乎有多少进口。

javax.swing.JButton button1 = new javax.swing.JButton();

想象一下上面的代码,但在成千上万的类文件中,绝对无处不在的成千上万行代码。我希望能够删除所有前缀,只是有一个很好的导入javax.swing.JButton;在每个类文件的顶部。


答案 1

我不知道这个用例的工具,但几个月前我不得不做类似的事情。

  • 编写脚本或使用正则表达式执行搜索替换,以删除显式键入的包前缀。

  • 比让eclipse使用“组织导入”来完成其余的工作。Ctrl-1

提示:为避免歧义,请设置不超过所需 lib 的类路径。大约800节课,我在2个小时内完成了。

  • 或者找一个配得上它的人来做这项工作。

编辑:您应该知道,在 Prefeneces/Java/Editor/Save Actions 中,Organize 导入可以配置为 Save 操作。


答案 2

对于单个类型,eclipse 提供“添加导入”操作(Shift+Ctrl+M)。它完全按照您的要求执行操作 - 具有很大的限制:您必须将光标放在类型上,它只会影响“选定”的发生。

但也许此操作可以在脚本化/全局方法中使用。JDT插件可以爬过AST,并在找到的每一种类型上调用此操作。