【问题标题】:Is there a way to have Eclipse automatically make all my variables final?有没有办法让 Eclipse 自动使我的所有变量成为最终变量?
【发布时间】:2012-07-09 00:53:17
【问题描述】:

我尽量避免使用非最终变量,如果 Eclipse 会为我自动执行此操作,它会节省一些输入(所以我不会忘记这样做)。我想要它检测我何时添加新的变量赋值/声明语句,并在完成后立即插入final 修饰符。

是否有可以实现此目的的配置选项或轻量级插件?

【问题讨论】:

    标签: java eclipse plugins


    【解决方案1】:

    您可以将其添加为“保存操作”,这样每当您保存文件时,Eclipse 都会将final 添加到您的变量中。方法如下:

    • 转到 窗口 > 首选项 > Java > 编辑器 > 保存操作
    • 勾选其他操作并按配置
    • 代码样式选项卡中有一个关于变量声明的部分,您可以勾选使用修饰符 尽可能“最终”。您可以在私有字段、参数和局部变量之间进行选择。

    或者您可以通过清理

    手动执行相同的操作(每隔一段时间或针对现有代码库)

    【讨论】:

    • 当他们意识到 catch-declarations 和 for-vars 与本地 var 声明相同的那一天,我将自己启用此选项 :) 现在,我仍然必须手工完成。
    • @MarkoTopolnik 对于 foreach 变量(例如,for ( final Object x : … ) { … })没有太大问题,但迭代变量 for ( int i = 0 ; … ; i++ ) { … } 会有问题。您是否经常有机会分配捕获声明?我认为try { } catch ( final Exception e ) { … } 没有太大问题……
    • @JoshuaTaylor 似乎你没有理解我的意思......问题在于所有这些 final 关键字都会给你的代码添加噪音。我更喜欢 final 是 default 和一个需要应用的特殊关键字来获取可变变量。
    • @MarkoTopolnik 我绝对同意这一点。很高兴 Java 现在有了“有效最终”的概念(其中 lambda 表达式中的变量引用必须是最终或有效最终),但我也希望最终是默认值,并且使用特定关键字启用可变性。您的评论使我认为您并不关心噪音,而是关心变量和变量的(不)可变性。显然迭代变量需要是可变的,但 catch 变量并不需要。但这与噪音不同。
    【解决方案2】:

    可以使用右键-->源码-->清理。 您应该首先在首选项的代码格式化程序部分定义您真正想要清理的内容。

    【讨论】:

    • 它不会在“完成后立即”添加它,但您可以不关心 final 修饰符,同时键入并在最后添加它们进行清理。
    【解决方案3】:

    Checkstyle插件可以为你做到这一点。您必须先设置您的 checkstyle 配置,然后在您的项目中启用 checkstyle,并让它在保存 java 文件时更改您的代码。

    【讨论】:

      【解决方案4】:

      这可能不是最强大的解决方案,但对于您经常使用的原语和/或类型,您可以定义宏

      int --> final int
      byte[] --> final byte[]
      List --> final List
      

      我也很喜欢格式化程序的想法,但是你必须接受它所具有的所有其他格式,这可能很麻烦。

      【讨论】:

        猜你喜欢
        • 2010-12-30
        • 2010-09-06
        • 2020-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 2017-06-09
        相关资源
        最近更新 更多