java - 为什么非静态最终成员变量不需要遵循常量命名约定?

标签 java netbeans naming-conventions constants naming

我正在使用 NetBeans IDE,在使用 Java 之前,我是一名 C++ 程序员。从 C++ 中,我了解到常量变量名称应该只包含大写字母。我认为大多数编程语言都建议常量变量应该只包含大写字母并用下划线来分隔单词。

当我尝试用小写字母声明 static 成员变量时,我的 IDE NetBeans 仅会警告我有关约定的信息。如果变量是final,但不是静态的,那就没问题了。

final int mem1 = 90; // no warning
static final int mem2 = 90; // warning

难道程序员不应该被迫使用大写字母来命名任何类型的(静态、非静态)常量变量吗?

最佳答案

final 不会使值成为常量,它只是意味着该字段的值只能分配一次。

以下是非常量最终字段的示例:

public final class IntHolder {
  private final int value;

  public IntHolder(int value) {
    this.value = value;
  }

  public int get() {
    return value;
  }
}

这里,value 字段对于 IntHolder 的每个实例都明显不同,因此它不是常量。将字段命名为常量只会导致困惑。

关于java - 为什么非静态最终成员变量不需要遵循常量命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581427/

相关文章:

java - 为多个子类创建通用 GUI

java - 更新查询在 mysql 中有效,但在 netbeans 中无效

.net - 如何根据 namespace 正确命名类?

java - 在 greenDAO 中使用 WHERE OR 选择多个元素的简单解决方案?

java - Android EditText 检查帮助

java - 不同字符串连接到 mysql 的应用程序属性

netbeans - 如何在 NetBeans 中显示/显示隐藏或不可见的字符?

java - 为什么.NoSuchMethodError : org. springframework.core.convert.converter.ConverterRegistry.addConverter

php - Laravel - 数据库、表和列命名约定?

java - 我应该使用包名还是类名来表示一个概念?