在 Java / Eclipse 中推断变量类型,如 C# 的“var”
Posted
技术标签:
【中文标题】在 Java / Eclipse 中推断变量类型,如 C# 的“var”【英文标题】:Infer variable type in Java / Eclipse, like C#'s "var" 【发布时间】:2011-12-11 20:54:01 【问题描述】:我喜欢 C# 中的“var”和 Groovy 中的“def”,我发现用 Java 写出类型很痛苦。
假设我正在编写如下代码:
List<LongTypeName> results = new ArrayList<LongTypeName>();
或
Map<TypeNameOne,TypeNameTwo> someLookup = fetchMeMyLookup();
在 Java + Eclipse 中最简单的方法是什么?
我对我不能 100% 确定开始生产线时的类型特别感兴趣。
我目前的策略是始终将变量声明为“int”,然后回到行首并执行“ctrl-1”,并接受 Eclipse 推断的类型。有没有更好的选择?
我希望能够键入“def”或“var”并让 Eclipse 自动将其更正为正确的类型。
(也许我应该只是在 Groovy 中编程)
【问题讨论】:
【参考方案1】:-
输入
new ArrayList<LongTypeName>();
键入 Ctrl+2+L
以创建新的局部变量
这两种类型都是“活跃的” - 您可以通过选项卡在它们之间循环选择。在这个例子中,名称proposals是list和arrayList,类型proposals都是ArrayList<String>
、List<String
、Collection<String>
等可能的接口和超类。
【讨论】:
实际上不需要第 2 步;Ctrl-2 l
将仅与位于分号之后的光标一起工作(或者实际上,在语句中的任何位置)。
alt-shift-L 也适用于我,而且更容易输入。我现在一直在使用它——谢谢!【参考方案2】:
类型:
someLookup = fetchMeMyLookup();
然后点击someLookup
并按Ctrl+1快速修复“创建局部变量someLookup”
【讨论】:
创建局部变量选项是列表中的第一项,因此我几乎总是可以在不检查快速修复对话框的情况下按 Ctrl-1 Enter。这很好。【参考方案3】:Java 10 为局部变量引入了类型推断。
您现在可以使用特殊(保留)类型名称var
,例如:
var results = new ArrayList<LongTypeName>();
var someLookup = fetchMeMyLookup();
详情请参阅JEP 286。
【讨论】:
以上是关于在 Java / Eclipse 中推断变量类型,如 C# 的“var”的主要内容,如果未能解决你的问题,请参考以下文章
GroovyGroovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )
[原创]Scala学习:关于变量(val,var,类型推断)