由静态final类实现的java抽象字段?
我正在尝试为我的Android应用程序创建自定义调色板。我开始这样做:
public class Theme {
public static final class DARK {
final static int POSITIVE_GREEN = Color.rgb(0, 200, 0);
final static int NEGATIVE_RED = Color.rgb(200, 0, 0);
final static int BACKGROUND_GREEN = Color.argb(255 - 220, 0, 255, 0); //220
final static int BACKGROUND_RED = Color.argb(255 - 220, 255, 0, 0);
}
public static final class PASTEL {
final static int POSITIVE_GREEN = Color.parseColor("#326262");
final static int NEGATIVE_RED = etc
final static int BACKGROUND_GREEN = etc
final static int BACKGROUND_RED = etc
}
}
但当我想重构其中一个字段名时,我意识到有点不对劲。字段名在主题或其他方面应该是抽象的,但由于它们不应该是可实例化的类,我不能使用这里建议的构造函数技巧: Why not abstract fields? 我该怎么做
# 1 楼答案
如果你只是想使用一个合同的名称,你可以使用下面的概念
# 2 楼答案
使用枚举而不是int常量 您可以改用enum,例如:
我不知道你是否能帮忙
# 3 楼答案
在这里使用接口似乎合适:
每个主题都将实现这个界面:
例如:
一般来说,公共静态变量的使用应该局限于一些非常简单的场景,而这并不是您想要实现的
https://docs.oracle.com/javase/tutorial/java/concepts/interface.html
# 4 楼答案
抽象方法只是子类需要提供的函数
“抽象字段”也可以被认为是一个需要提供的值