【问题标题】:Use Interface or Class for Constants?对常量使用接口或类?
【发布时间】:2016-01-05 19:44:56
【问题描述】:
有很多关于在 Java 中使用接口作为常量的负面评价。我只是想知道Android开发是否相同,以及原因。
我有这个问题是因为我听到了Enum 和static final 之间的战斗。 Enum 对于 Android 开发来说不是一件好事,我发现 Android Developer 的 YouTube 视频帖子建议开发者使用 static final 而不是 Enum。
【问题讨论】:
标签:
java
android
interface
enums
【解决方案1】:
这取决于你想要做什么。如果您需要存储类型安全的静态数据的集合,请使用枚举。例如,您可以使用硬币类型的集合来表示货币。
像这样:
public enum Coin {
PENNY,
NICKEL,
DIME,
QUARTER;
}
对于不同类型的静态数据,使用静态最终值。
例如:
static final int FREEZING_TEMP_FAHRENHEIT = 32
static final double GRAVITY = 9.81
这取决于您是否可以对静态数据进行分组,以便将其存储为事物的集合。如果是这样,枚举。如果不是,则静态最终。
【解决方案2】:
常量的接口是什么意思?在我的大多数应用程序中,我都有一个单例类常量,它有一些公共静态最终字段(在开发时已知的东西)和一些公共字段(仅在运行时已知的东西,并且在单例实例初始化时被初始化首先调用 Constants.getInstance())。如果我的某些字段需要设置上下文,通常我会添加一个方法 initialize(Context context),这是我在 MainActivity 的 onCreate 中调用的第一件事。
【解决方案3】:
对于常量,我通常为它创建一个资源。例如,对于字符串,您将使用 strings.xml,您也可以使用整数常量。这种方法很有用,因为你从我觉得更有条理的代码中抽象出你的内容。对于特定类所需的常量,我会将它们保留在类内!