19

我想要做的是:

List<String> list = new 

然后按 Ctrl+Space 并让ArrayList<String>()(以及其他)显示在类型建议中。

我以为我以前有这个工作,但我最近不得不重新安装并且找不到它的设置。

这是 Eclipse Java EE helios,但如果需要,我可以升级到 indigo。

我尝试在这里寻求帮助,但没有找到我正在寻找的信息。我尝试检查“默认提案种类”(Java -> 编辑器 -> 内容辅助 -> 高级)下的所有框,但无济于事。

4

6 回答 6

6

Eclipse 不知道哪个类实现了该接口,并且不会为它拥有的所有接口加载它们。但是,Eclipse 可以了解您使用的内容并在下次使用时向您展示,也许这就是发生在您身上的事情,随着时间的推移您教 Eclipse 实现的类!

这是一个 Eclipse 在学习之前/之后学习什么类实现的示例Map

在此处输入图像描述

正如您在图像中看到的,第一次,Eclipse 除了我之前使用过的 之外什么都不知道HashMap

之后,我使用TreeMapLinkedHashMap手动输入它们(仅限第一次),Eclipse 现在缓存了它们。

正如伙计们所建议的那样,您可以点上Map并单击Ctrl+T它将为所有类提供实现此功能的类。第一次会有帮助。

2014 年更新!

正如@K.Carpenter 所注意到的,此功能在较新的 Eclipse 版本中被禁用。重新启用它。转到窗口->首选项->Java->编辑器->内容辅助->高级。

Default Proposal Kinds下,您需要检查Java Type Proposals

于 2012-01-05T07:10:48.597 回答
2

像这样的代码是我对 Java 泛型最讨厌的地方之一。我使用 Google 的Guava库使我的泛型代码更具可读性,并且作为副作用不需要 Eclipse 中的这个特定功能(尽管我同意应该实现它)。Guava 对 Set 也有类似的支持。

例如,我通常会如下声明我的代码:

import com.google.common.collect.Lists;
...
List myList<String> = Lists.newArrayList();
于 2012-01-03T10:51:51.263 回答
1

我希望看到 Eclipse 这样做,但我想内容辅助在没有开始字符的情况下永远不会起作用(除非有一些我们不知道的隐藏功能)。

好吧,考虑到这一点,我要解决“锁定最常用的实现”的方法是查看该部分中的 javadoc All Known Implementing Classes,看看我可以使用的其他可能性。

我知道这不是一个在 Eclipse 中的解决方案,但它可能会帮助一些陷入同样问题的用户。

于 2011-12-29T19:08:24.530 回答
1

不假装是您问题的答案,但我使用 Quick Fix ( Ctrl+ 1/ Ctrl+ 2) 定义新的局部变量或字段。

首先,我输入(可能使用Ctrl+Space表示内容辅助):

new ArrayList<String>();

然后我按Ctrl+2L通过生成类型被实例化的变量定义将语句分配给新的局部变量:

ArrayList<String> arrayList = new ArrayList<String>();

最后,我使用选项卡(也可以使用 Enter)在插入之间导航,arrayListArrayList从下拉列表中指定确切的变量名称及其类型:

List<String> list = new ArrayList<String>();

第三次按 Tab 将光标移动到语句的末尾。

希望,你会发现这种方式也很有用。

于 2012-01-02T18:55:12.097 回答
1

这是一种可以向 Eclipse 添加新模板的方法,然后您所要做的就是键入 arraylist,按 ctrl + 空格,它会为您创建整个声明。您所要做的就是添加类型和名称。

保存此文件,然后将其导入 eclipse

这是导入/导出模板的方法

  • 转到窗口 > 首选项 > Java > 编辑器 > 模板

  • 选择所需的模板。注意!复选框不表示选择了什么;它们用于启用/禁用模板。如果选择了表格中的整行,则选择了模板,因此请使用 Ctrl+左键单击或特定于您的操作系统的方法来多选模板。

  • 单击 Import... 并选择您收到的 XML 文件。或导出...并提供文件名。

类型数组列表

输入数组列表

按 ctrl+space 并选择 arraylist

按 Ctrl + 空格

填写类型和名称 填写类型和名称

于 2012-01-04T03:56:56.747 回答
0

我能够做到这一点,但它没有出现在类型提案中。尝试输入:

List<String> list = new Ar

点击 Ctrl-Space 并接受第一个建议。它对ArrayList<String>()我来说完成了(这是使用 SpringSource Tool Suite Eclipse 发行版)。

于 2011-10-18T16:15:52.700 回答