java - 在多个公共类之间在java中实现全局常量的最佳方法是什么?
问题描述
在掌握了 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 程序员那里弄清楚是否有更标准的/传统的方式来做到这一点。任何建议都会有所帮助,谢谢!
解决方案
通常将常量放在与学科相关的类中作为类字段。以下是 JavaMath
类和 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 Use enums instead int constants 。所以不能为这个话题添加新的东西。
推荐阅读
- python - 如何编写一个函数,它接受一个文件名并返回一个字符串,其中所有 \n 字符都替换为“_”
- apache-kafka - 使用 Avro 从 Logastash 发送到 Kafka
- java - JPA - 休眠 - '字段列表'中的未知列'x_xxx_xxxxx'
- linux - 如何安装ubuntu统一
- python - 爬取谷歌图片搜索Python(requests、beautifulsoup)
- c# - 什么取代了 asp.net 核心中的 OnAuthorization 方法
- swift - @State 与 @ObservableObject - 哪个以及何时?
- javascript - Javascript Dom按钮onclick函数在页面加载时工作为什么?
- python - np.prod 与 pint.UnitRegistry() 的单位 - python
- python - 从 StratifiedKFold 中的每个折叠中获取多个拆分