在Java的某些应用程序中,我缺少C ++中的“auto”关键字。不要误解我的意思,这绝不是关于语言哲学或编程实践的讨论。
例如,如果我有地图地图,并且我想拥有相关的输入集,则代码如下所示:
Map<String, Map<String, VeryLongClassNameGetsEvenLongerAndLonger>> map = new HashMap<>();
Set<Map.Entry<String, Map<String, VeryLongClassNameGetsEvenLongerAndLonger>>> entryset = map.entrySet();
现在变量“entryset”的类型非常难以输入并且正确。在C ++中,我会在这里使用auto。这在Java中不存在,所以我使用了IntelliJ IDE提供的下一个最好的东西。我输入
Integer entryset = map.entrySet();
这显然不正确,但这会提示IntelliJ向我建议:
Change variable 'entryset' type to 'Set<Map.Entry<String, Map<String, VeryLongClassNameGetsEvenLongerAndLonger>>>
所以我只需按Alt-Enter即可自动修正。
然而,我想知道:如果不经过修正功能,我能做到吗?像“自动完成类型”-Hotkey,或/ auto / pragma,还是其他东西?
答案 0 :(得分:4)
您可以在其后键入表达式.var
,然后按 Tab ,它将创建变量声明
您可以编写表达式并按 Ctrl + Alt + V (默认情况下),表达式将被提取到一个新变量。
如果您喜欢使用var
和val
关键字的C#/ Scala / Kotlin样式声明,您可能会发现有用的Varsity插件。
它允许您以下列方式编写变量声明:
var entrySet = map.entrySet();
然后你点击 Enter 就会变成
Set<Map.Entry<TheKeyType, TheValueType>> entrySet = map.entrySet();
答案 1 :(得分:2)
退出该类型。 Intellij将建议创建一个局部变量,并将从返回类型推断出来。例如。键入...
entryset = map.entrySet();
entryset 现在将显示为红色,表示错误。
然后 ALT + ENTER ,它应显示一个小菜单,其中创建本地变量作为选项。