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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |