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();