java - 私有(private)对象字段可以是最终的,netbeans 警告

标签 java netbeans

我收到与我的一个字段声明相关的警告,并想知道处理它的良好做法

public class ModeloCatalogo extends Modelo {

    private static ArrayList<String> excluidas = new ArrayList<>();
    ...bunch of irrelevant fields...

    private static void functionThatLoadsValuesIntoArrayList(){
        excluidas.add("String 1");
        ...
        excluidas.add("String n");
    }
    ...bunch of irrelevant methods...
}

在字段声明中,netbeans 警告“field can be final”,可以这样解决:

    private static ArrayList<String> EXCLUIDAS = new ArrayList<>();

请注意,如果不是大写,netbeans 将根据命名约定生成不同的警告。 (为了清晰起见,在编辑中添加)

命名约定应该是大写,这让我感到畏缩,似乎不对。

通过在将值加载到数组的函数内初始化数组来消除警告。

    private static ArrayList<String> excluidas;

    private static void functionThatLoadsValuesIntoArrayList(){
        excluidas  = new ArrayList<>();
        excluidas.add("String 1");
        ...

但恕我直言,它降低了代码的可读性。

这让我开始思考,消除警告的正确方法是什么?

最佳答案

NetBeans 可能建议将该字段设置为 final,因为您仅在初始化期间为其分配值,之后不再重新分配它。

常量的命名约定在 Java Language Specification 中指定。其中说:

[...] and final variables of class types may conventionally be, a sequence of one or more words, acronyms, or abbreviations, all uppercase, with components separated by underscore "_" characters

但是,it is argued可变的staticfinal字段不应被视为常量,因此应使用正常的字段命名。

如果类型可变,较新版本的 NetBeans 不应显示所描述的重命名字段的警告,请参阅 this comment 。确保您使用的版本是最新的并且您没有禁用此检查。

<小时/>

但是您确定该字段首先应该是静态吗?如果方法 functionThatLoadsValuesIntoArrayList 可以在您当前的设计中为其分配一个值,那么该字段可能不应该是静态的,尽管通过这个小代码片段很难判断这一点。

关于java - 私有(private)对象字段可以是最终的,netbeans 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52992586/

相关文章:

java:将一个值添加到二维数组中的一列

java - Spring Jpa 规范 用 like 连接表

Netbeans 键盘快捷键不适用于非英语键盘布局

php - 通过 PEAR 安装 phpunit 后如何获得 phpunit.bat?

java - 如何使用该类的泛型类型(Java)的泛型类型?

java - 当根pom具有两个或多个子模块共用的插件时,Maven循环引用

Java 轻型构建工具

javascript - Netbeans javascript 评论

java - Java Netbeans Glassfish Web 应用程序中不存在此应用程序 (app_id)

java - netbeans 7.1 中的 "JVM creation failed"