加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在这种情况下使用枚举是否正确?

发布时间:2020-12-15 04:22:16 所属栏目:Java 来源:网络整理
导读:这是关于最佳实践/风格的问题. 我有一个Printer类,可以打印出不同颜色的元素.使用Enum作为输入是否正确: public class Printer {public enum Color{RED,GREEN,BLUE}public void print (Color color){ MyElement myElement = new MyElement(); switch (color
这是关于最佳实践/风格的问题.

我有一个Printer类,可以打印出不同颜色的元素.使用Enum作为输入是否正确:

public class Printer {

public enum Color{RED,GREEN,BLUE}

public void print (Color color){
    MyElement myElement = new MyElement();
    switch (color) {
        case RED:
            myElement.setColor("#xxxxxx");
            break;
        case GREEN:
            myElement.setColor("#xxxxxx");
            break;
        case BLUE:
            myElement.setColor("#xxxxxx");
            break;
    }
    myElement.print();
}

}

然后从另一个类中调用该方法,如下所示:

Printer p = new Printer();
p.print(Printer.Color.RED);

…或者将值添加到枚举中会更好:

public class Printer {

    public enum Color {
        RED("#xxxxxx"),GREEN("#xxxxxx"),BLUE("#xxxxxx");

        private final String hex;

        Color(String hex){
            this.hex = hex;
        }

        public String getHex(){
            return this.hex;
        }
    }

    public void print (Color color){
        MyElement myElement = new MyElement();
        myElement.setColor(color.getHex());
        myElement.print();
    }

}

…或者根本不使用枚举,只使用普通字符串?

解决方法

我认为您的解决方案没有任何问题.我唯一建议的是在Enum上创建一个构造函数并将颜色值存储在那里.但这只是一个建议.

它会是这样的:

public class Printer {

public enum Color{
    RED("#FF0000"),GREEN("#00FF00"),BLUE("#0000FF");

    private String colorAsString;

    private Color(String colorAsString) {
        this.colorAsString = colorAsString;
    }

    public String getColorAsString() {
        return this.colorAsString;
    }
}

public void print (Color color){
    MyElement myElement = new MyElement();
    myElement.setColor(color.getColorAsString());
    myElement.print();
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读