【问题标题】:Automatically replacing with var using IntelliJ使用 IntelliJ 自动替换为 var
【发布时间】:2020-10-22 12:15:33
【问题描述】:

我正在迁移一些 Java 10 之前的代码,我想知道 IntelliJ 是否提供了一种自动重构代码的方法,以用 var 尽可能地。

代码中充满了类似的东西:

String status = "empty";
BigDecimal interest = BigDecimal.ZERO;
List<Future<Boolean>> results = es.invokeAll(tasks);
LocalDate start = LocalDate.of(2020, 1, 1);

我更喜欢:

var status = "empty";
var interest = BigDecimal.ZERO;
var results = es.invokeAll(tasks);
var start = LocalDate.of(2020, 1, 1);

我已经查看了 IntelliJ 的设置(代码样式/检查),但找不到任何东西。

【问题讨论】:

  • 你为什么要这么做?我对“var”的看法是,它旨在使新代码更易于编写,但您对重构现有代码以使用它有何期望?
  • 新部分使用var,我更喜欢它。我想在整个项目中保持一致的风格。
  • 新部件是否到处都使用var?我认为这通常取决于您是否应该使用它,例如MyComplexType bla = create()var bla = create() 给了我更多的信息。旧代码的问题是您阅读它的频率更高,并且不想在这种情况下猜测类型。所以没有好办法知道是否使用var,也没有办法自动化这些选择。
  • 您可以使用检查 局部变量类型可以省略(Java | Java 语言级迁移辅助工具 | Java 10 | 局部变量类型可以省略)。它提供了“修复所有”修复,这将有助于将文件中的类型更改为 var。
  • Olga Klisho,这正是我想要的。您可以将您的评论放在答案中以便我接受吗?

标签: java intellij-idea


【解决方案1】:
  1. 转到File | Settings,选择Editor | Inspections,然后在Java | Java language level migration aids | Java 10下。

  2. 右键单击Local variable type can be omitted并选择Weak Warning或类似名称。

  3. 将光标移到代码中的任何警告上(突出显示的灰色),打开快速修复上下文帮助(alt+enter),在Replace explicit type with 'var' 向右移动并选择Fix all 'Local variable type can be omitted' problems in file

感谢@olga-klisho 的想法(在 cmets 中)

【讨论】:

    【解决方案2】:

    我使用的是 IntelliJ IDEA 2021.3.2,但不认为设置是新的。

    我自己也一直在努力解决这个问题。

    好像第一次在本地安装IntelliJ,默认会回退到使用传统的变量定义(即String s = new String();

    我如何设法将其更改为使用 var 是在我声明某些内容之后,例如 new String(),或者我按下 ⌥ Alt/Option+Enter 到为该声明声明一个变量或使用 ⌘ Command+⇧ Shift+V 快捷方式(我使用的是 Mac 和经典的 Intellij 键映射,所以 YMMV) 激活变量的声明,这将显示如下:

    如您所见,建议点击该组合键快捷方式或单击设置按钮会打开如下弹出窗口:

    确保您已选择 Declare var type,您应该一切顺利。

    【讨论】:

      【解决方案3】:

      使用 IntelliJ Edit -&gt; Find -&gt; Replace... 选项。

      Ctrl + R

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-18
        • 2016-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 2014-09-20
        相关资源
        最近更新 更多