Eclipse 优化导入以包括静态导入

Posted

技术标签:

【中文标题】Eclipse 优化导入以包括静态导入【英文标题】:Eclipse Optimize Imports to Include Static Imports 【发布时间】:2010-09-22 06:39:59 【问题描述】:

有没有办法让 Eclipse 自动查找静态导入?例如,现在我终于升级到 Junit 4,我希望能够编写:

assertEquals(expectedValue, actualValue);

点击 Ctrl + Shift + O 并让 Eclipse 添加:

import static org.junit.Assert.assertEquals;

也许我要求太多了。

【问题讨论】:

这能回答你的问题吗? Do I have to manually add static imports all the time? 【参考方案1】:

我正在使用 Eclipse Europa,它也有收藏首选项部分:

窗口 > 首选项 > Java > 编辑器 > 内容辅助 > 收藏夹

在我的中,我有以下条目(添加时,使用“新类型”并省略.*):

org.hamcrest.Matchers.*
org.hamcrest.CoreMatchers.*
org.junit.*
org.junit.Assert.*
org.junit.Assume.*
org.junit.matchers.JUnitMatchers.*

除了第三个之外,所有这些都是静态导入。通过将它们设为收藏夹,如果我输入“assertT”并点击 Ctrl+Space,Eclipse 会提供 assertThat 作为建议,如果我选择它,它会将正确的静态导入添加到文件中。

【讨论】:

啊 - 诀窍是通过 New Type... 简单地添加 org.junit.Assert,然后 .* 是隐式的。 自动导入Ctrl+Shift+o不会添加必要的导入是否正确,实际上您必须将光标悬停并选择Add static import..选项?很遗憾没有显示通常的自动导入选择列表对话框。 @J.Stoever - 如果你使用 JUnit 4,你会想要使用 Hamcrest 表单:assertThat(value, is(expected)); 我用 Eclipse Kepler 试过这个,但无济于事。我也重新启动了 Eclipse。悬停或按 CTRL + 1 时没有自动完成,没有静态导入选择。有人遇到过这种情况吗? Intellij Idea 开箱即用地支持这一点。可耻的日食没有。【参考方案2】:

如果您突出显示方法 Assert.assertEquals(val1, val2) 并点击 Ctrl + Shift + M(添加导入),它会将其添加为静态导入,至少在 Eclipse 3.4 中。

【讨论】:

在 Eclipse Juno 中,如果我只突出显示方法然后使用 CTRL + SHIFT + M,我只能设法使其工作。 这应该是赢家! 也适用于静态字段 A.X -> X(主要是 A.X 和 Ctrl + Shift + M)。谢谢。正是我想要的。 太棒了!太缺这个功能了 在 Luna 上为我工作。确保您的光标位于句号的右侧。真希望我几年前就知道了!【参考方案3】:

Eclipse 3.4 在 Window->Preferences->Java->Editor->Content Assist 下有一个收藏夹部分

如果您经常使用org.junit.Assert,您可能会发现在其中添加它会有些价值。

【讨论】:

【参考方案4】:

不完全是我想要的,但我找到了解决方法。在 Eclipse 3.4 (Ganymede) 中,转到

窗口->首选项->Java->编辑器->内容辅助

并选中使用静态导入(仅 1.5 或更高版本)复选框。

这不会在优化导入中引入导入,但如果您在该行上执行快速修复 (CTRL + 1),它将为您提供选项添加足够好的静态导入。

【讨论】:

【参考方案5】:

来自Content assist for static imports

要获取静态成员的内容辅助建议,请在“打开收藏夹”首选项页面Java > Editor > Content Assist > Favorites 首选项页面上配置您最喜欢的静态成员列表。 例如,如果您已将java.util.Arrays.*org.junit.Assert.* 添加到此列表中,则所有匹配完成前缀的此类型静态方法都将添加到提案列表中。

打开Window » Preferences » Java » Editor » Content Assist » Favorites

【讨论】:

【参考方案6】:

对于 SpringFramework 测试,我建议也添加以下内容

org.springframework.test.web.servlet.request.MockMvcRequestBuilders
org.springframework.test.web.servlet.request.MockMvcResponseBuilders
org.springframework.test.web.servlet.result.MockMvcResultHandlers
org.springframework.test.web.servlet.result.MockMvcResultMatchers
org.springframework.test.web.servlet.setup.MockMvcBuilders
org.mockito.Mockito

当您将上面添加为新类型时,它会自动将 .* 添加到包中。

【讨论】:

【参考方案7】:

静态导入的捷径: CTRL + SHIFT + M

【讨论】:

【参考方案8】:

选择常量,输入

Ctrl + 1  (quick fix)

选择“转换为静态导入”。从下拉菜单中。

“快速修复”有选项,即使它不是错误。

【讨论】:

【参考方案9】:

在 Eclipse 4.9 中,您可以使用快速修复静态导入现有调用。

已实施新的快速修复,允许用户将静态字段访问和静态方法转换为使用静态导入。也可以同时替换所有匹配项。

More details here

【讨论】:

以上是关于Eclipse 优化导入以包括静态导入的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse动态Web项目导入到IDEA中

Android 安装包优化使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

静态导入,断言

.a静态库导入编译报错

jsp里面include的静态导入和动态导入的区别

Java中的静态导入