我需要在我的应用程序中创建100个或更多静态最终常量,我可以按照我的理解实现这两种方式:
class
并在其中创建static
final
字段static
final
我在上面的方法中有这些问题:
答案 0 :(得分:5)
您可以参考很多关于该主题的书籍。
我会引用一个好的:"有效的Java"
第19项:仅使用界面来定义类型
常量接口模式是接口的不良使用。那个 class在内部使用一些常量是一个实现细节。 实现常量接口会导致此实现细节 泄漏到类的导出API中。它并不重要 类实现常量接口的类的用户
你甚至可以检查JDK主要是常量声明的位置..
Math.PI
例如在Math类中声明,而不是在接口中声明
作为一个例外,您可以看到 java.io.ObjectStreamConstants 中的常量,但同时书籍可以提供帮助:
再次从有效的java:
Java平台库中有几个常量接口......
这些接口应该是 被视为异常,不应该被模仿。
答案 1 :(得分:0)
我认为,方便的方法是将它们放在一个地方,如果它们具有共同的性质。无论如何,它们应该按一些属性分组。您可以像这样为他们创建类:
public final class Consts {
public static class GroupA {...}
public static class GroupB {...}
//and so on
}
使用组,这个类变得更易读,更易于管理。关于内存消耗,尝试使用常量的原语,因为它们不需要额外的元信息空间。
答案 2 :(得分:0)
我不会想到它们应该在接口或类中,而是更多关于常量及其含义。
我不建议将所有常量放在一个地方,以便将它们放在一起。例如,如果一个常量与一个类直接相关,那么就会把它放在那个类中。我已经使用了代码,其中所有常量都捆绑在一个类中,我不知道这是一个好方法。
答案 3 :(得分:0)
您是否考虑过使用ENUM,或者它不适合您的情况? 我认为,使用ENUM的方法可以为您提供一些优于常数的优势。
答案 4 :(得分:0)
您可以通过在接口类中声明字段来随意创建最终或静态约束,因此我想使用您的选项编号 2