是否有针对静态最终变量的这种命名约定的原因?

问题描述 投票:-1回答:2

我正在学习HeadFirst Java书籍,目前在Numbers and statics一章中。他们最近引入了静态最终变量的概念。完全清楚地解释它们。我的问题是,他们使用类名+任意名称(以下划线分隔)将变量命名为大写。这是一个例子。

    public class Foo {
        public static final int FOO_SUM = 5;
    }

这是为什么?

java oop static naming-conventions final
2个回答
1
投票

该符号与Code Conventions for the Java Programming Language一致,它可以追溯到Java的早期。该文件包括理由:

此文档反映了Sun Microsystems,Inc.的Java Language Specification中提出的Java语言编码标准。


1
投票

这是一个约定。该格式称为SNAKE_CASE。它应仅在static final原语或immutable objects上使用。除其他事项外,这在official Oracle style guideGoogle Java style guide中定义。该信号表示某些内容将被视为常量。如果对象是可变的,则应该notstatic final字段使用SNAKE_CASE。

包含类名是为了调用方。假设您有两个类AB,它们都有一个public static final int NUMBER变量:

public class A {
    public static final int NUMBER = 1;
}

public class B {
    public static final int NUMBER = 2;
}

public class Ideone {

    public static void main(String[] args) {
        System.out.println(A.NUMBER); // = 1
        System.out.println(B.NUMBER); // = 2
    }
}

在同一个班级内,可以放弃班级名称,例如:

public class A {
    public static final int NUMBER = 1;

    public int getNumberPlusTwo() {
        return NUMBER + 2; // returns 3
    }
}

如果要在B中引用NUMBERA,则必须再次使用类名:

public class A {
    ...
    public int getBsNumberPlusTwo() {
        return B.NUMBER + 2; // returns 4
    }
}

Ideone Demo

© www.soinside.com 2019 - 2024. All rights reserved.