Java eclipse中内容辅助中实现的类/子类

Java eclipse中内容辅助中实现的类/子类,java,eclipse,subclass,eclipse-jdt,content-assist,Java,Eclipse,Subclass,Eclipse Jdt,Content Assist,我想做的是: List<String> list = new 列表=新建 然后按Ctrl+Space并获取ArrayList()(以及其他)以显示在类型建议中 我以前以为我可以用它,但最近我不得不重新安装,找不到它的设置 这是EclipseJavaEEHelios,但如果需要,我可以升级到indigo 我试图寻求帮助,但没有找到我要找的信息。我已尝试选中“默认建议类型”(Java->Editor->Content Assist->Advanced)下的所有框,但没有结果。我可以

我想做的是:

List<String> list = new 
列表=新建
然后按Ctrl+Space并获取
ArrayList()
(以及其他)以显示在类型建议中

我以前以为我可以用它,但最近我不得不重新安装,找不到它的设置

这是EclipseJavaEEHelios,但如果需要,我可以升级到indigo


我试图寻求帮助,但没有找到我要找的信息。我已尝试选中“默认建议类型”(Java->Editor->Content Assist->Advanced)下的所有框,但没有结果。

我可以这样做,但它不会显示在类型建议中。请尝试键入:

List List=新Ar


点击Ctrl-Space并接受第一个建议。它为我完成了
ArrayList()
(这是使用SpringSource工具套件Eclipse发行版的)。

我希望看到Eclipse这样做,但我想如果没有起始字符,内容辅助永远不会工作(除非有我们不知道的隐藏特性)

考虑到这一点,我从“锁定最常用的实现”开始要做的是查看
所有已知实现类中的javadoc,看看我可以使用的其他可能性


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

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

首先,我键入(可能使用Ctrl+Space作为内容辅助):

第三次按tab键将光标移动到语句末尾


希望,您也会发现这种方法很有用。

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

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

import com.google.common.collect.Lists;
...
List myList<String> = Lists.newArrayList();
import com.google.common.collect.list;
...
List myList=Lists.newArrayList();

有一种方法可以向eclipse添加新模板,然后只需键入arraylist,按ctrl+space,它就会为您创建整个声明。只需添加类型和名称

下面介绍如何导入/导出模板

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

  • 选择所需的模板。注意!复选框不指示 所选内容;用于启用/禁用模板。a 如果选择了表中的整行,则选择“模板”,因此 使用Ctrl+左键单击或特定于操作系统的方法进行多选 模板

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

类型arrayList 按ctrl+space并选择arraylist 填写类型和名称

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

这里有一个Eclipse示例,在学习之前/之后,学习了哪些类实现了
Map

正如您在图中所看到的,Eclipse第一次只知道我以前使用的
HashMap

在那之后,我使用
TreeMap
LinkedHashMap
手动输入它们(仅第一次),Eclipse现在缓存它们

正如大家所建议的,你可以把这一点放在
Map
上,然后单击
Ctrl+T
,它将为所有类提供实现这一点的工具。这在第一次使用时会很有帮助

2014年更新!

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


在默认提案类型下,您需要检查Java类型提案

真的吗?这曾经有效吗?我从未见过。我感兴趣的是看看它是如何完成的。这是Intellij中的标准行为,即使在您转发的链接中也不可能出现。我从未见过这种行为。您确定它以前有效吗?确实有效标准的Netbeans行为。为什么像Eclipse这样如此流行的IDE没有如此有用的功能。没有这一点,我必须深入到有时未知的API。您是否确保先导入java.util.List。我可以这样做,但我不想被锁定到ArrayList中。我想要所有可能的。我不想知道实现类从开始。谢谢。事实上,这是最好的答案,但不是我所期望的。哦,好吧。这解释了为什么它只给我列表的ArrayList和地图的HashMap。现在已经过了几年了,但是自从Galileo支持这个学习功能以来,Eclipse有任何版本吗?自从en.@K.Carpenter您是对的。它已成为配置,默认情况下已禁用。我正在更新答案以反映这一点。
ArrayList<String> arrayList = new ArrayList<String>();
List<String> list = new ArrayList<String>();
import com.google.common.collect.Lists;
...
List myList<String> = Lists.newArrayList();