java - 我应该在这里使用枚举吗?

标签 java enums

我有一个名为 ColorConstants 的类,它只是一个类,它定义了我的整个应用程序中使用的许多 public static final Color 字段 - 使更改配色方案变得容易等等 我想做的是有两种方案:倒置的,不倒置的。我想设置此类,以便根据方案/主题,相同的字段名称可以引用不同的颜色。而不是每次都检查/获取必要的颜色。

我以前从未使用过 enum,只是想知道它是否适合这个? 或者,我只是将字段设置为非最终字段并使用 setAll(int theme) 方法。

最佳答案

我不会在这里使用枚举。

我会创建一个包含所有颜色字段(非最终)但没有值的类。并创建在构造函数中定义所有颜色的扩展类。

public abstract class ColorScheme
{
    public Color background;
    public Color foreground;
    public Color cursor;

}

现在创建 ColorScheme 的实现:

public class DarkColorScheme extends ColorScheme
{
    public DarkColorScheme()
    {
        background = new Color(0x111111);
        foreground = new Color(0xDDDDDD);
        cursor     = new Color(0xEEEEEE);
    }
}

现在,您可以像这样使用您的配色方案:

public ColorScheme colorScheme = new DarkColorScheme();

从现在开始,您可以创建额外的配色方案,只需在新配色方案上方的行中使用,一切都应该动态工作。

关于java - 我应该在这里使用枚举吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8639961/

相关文章:

c - 枚举和一个以字符串形式返回月份名称的函数

grails - 如何在Grails 4中的创建和编辑表单中添加多个枚举字段?

swift - 将 Switch 语句与带有嵌套枚举的结构结合使用 - Swift

Java 在单独的行上打印数据库记录

java - 将目录索引 ('/' 的 Web 请求转发到 JBoss 4.0.5 中的 index.htm 页面

java - Hibernate 从表中获取具有最大字段值的单行

c# - 检查枚举是否包含多个标志

java - 如何在 Bitcoinj (java) 中查看某个地址的交易?

java - 解决数独的多线程算法?

java - 将枚举的 ArrayList 转换为 String