在 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&lt;LongTypeName&gt;(); 键入 Ctrl+2+L 以创建新的局部变量

这两种类型都是“活跃的” - 您可以通过选项卡在它们之间循环选择。在这个例子中,名称proposals是listarrayList,类型proposals都是ArrayList&lt;String&gt;List&lt;StringCollection&lt;String&gt;等可能的接口和超类。

【讨论】:

实际上不需要第 2 步; Ctrl-2 l 将仅与位于分号之后的光标一起工作(或者实际上,在语句中的任何位置)。 alt-shift-L 也适用于我,而且更容易输入。我现在一直在使用它——谢谢!【参考方案2】:

类型:

someLookup = fetchMeMyLookup();

然后点击someLookup并按Ctrl+1快速修复“创建局部变量some​​Lookup”

【讨论】:

创建局部变量选项是列表中的第一项,因此我几乎总是可以在不检查快速修复对话框的情况下按 Ctrl-1 Enter。这很好。【参考方案3】:

Java 10 为局部变量引入了类型推断。 您现在可以使用特殊(保留)类型名称var,例如:

var results = new ArrayList<LongTypeName>();

var someLookup = fetchMeMyLookup();

详情请参阅JEP 286。

【讨论】:

以上是关于在 Java / Eclipse 中推断变量类型,如 C# 的“var”的主要内容,如果未能解决你的问题,请参考以下文章

GroovyGroovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )

我反编译了Java 10的本地变量类型推断

[原创]Scala学习:关于变量(val,var,类型推断)

JDK将新增局部变量类型推断功能

java10新特性:本地变量(local variable)-var类型推断

JDK11 | 第三篇 : 局部变量类型推断