在多个公共类之间的java中实现全局常量的最佳方法是什么?

时间:2018-09-17 17:15:44

标签: java constants

在掌握了C ++之后,我才刚开始学习Java,我想知道是否有一种方法可以像在C语言中一样拥有全局常量,就可以拥有一个带有一系列常量的Header文件,您可以只在需要使用它们的任何类文件中包括它们。现在,在我的Java项目中,我通过使用将常量定义为最终变量的Java接口来实现这种效果。

public interface Constants {
    public int constant1 = 36;
    public String projectName = "Project Name";
    public float ratio = 4.716f;
    // ... more parameters
}

要在使用它们的类文件中访问它们,我只需在类文件中使用Implements关键字即可。

public class Class1 implements Constants {
    // Members
    // ...
    // Methods
    // ...
}

并不是说这不起作用,我只是想知道这是否是获得这种效果的最佳方法。我没有接受过Java的正式培训,只是从一些书籍和在线论坛上教自己。我环顾四周,但没有找到关于该特定主题的太多讨论,更多地是关于在类中声明常量,因此,我只是想从一些经验丰富的Java程序员那里接受正规培训,以了解是否有更标准的方法/常规方式即可。任何建议都会有所帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

通常在与主题相关的类中作为类字段放置的常量。以下是Java Math类和Android View

的示例
public final class Math {
    public static final double PI = 3.14159265358979323846;

public class View
    public static final int VISIBLE = 0x00000000;
    public static final int INVISIBLE = 0x00000004;

然后它们可以在任何其他带有前缀或静态导入的类名称的类中使用

double radius = 2 * r * Math.PI;

import static android.view.View.VISIBLE;
view.setVisibility(VISIBLE);

接口常数是反模式,应避免使用。我不是一个经验丰富的Java开发人员,但是到目前为止,还没有看到专门用于保存常量的类(除非处理诸如Android的R类之类的资源包)。


此外,Java提供了枚举之类的功能。 Joshua Bloch是许多Java平台功能的设计者和实现者,在Effective Java中有第34项 使用枚举而不是int常量。因此不能向该主题添加新内容。

答案 1 :(得分:-1)

像下面一样创建单独的类

public final class Constants{
    public static final int CONSTANT_1 = 36;
    public static final String PROJECT_NAME = "Project Name";
}

使用下面的代码

 Constants.CONSTANT_1;
相关问题