首页 / JAVA / 枚举Java的最佳方法
枚举Java的最佳方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了枚举Java的最佳方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2332字,纯文字阅读大概需要4分钟。
内容图文
![枚举Java的最佳方法](/upload/InfoBanner/zyjiaocheng/823/f205f6a1a4294bafa2e27e453fce7c82.jpg)
我想知道在Java中枚举的好方法.
我很想知道这一点,通常我想出的东西包括几个独立的枚举和函数,还有一些定义等等.
但基本上,我想为各种类型的枚举定义唯一的数字键,使用子枚举.
例如,我正在尝试在括号中实现一种带有各种关键字和符号的语言,并带有与该元素对应的数字.像元素(id).
关键词:程序(1),调用(2),if(3),else(4),elsif(5),…
符号’;'(6),’,'(7),’='(8),”(9),…
运营:和(10),或(11),……
实现这一目标的最佳方法是什么?
我希望我的帖子很清楚.但基本上我正在尝试创建元素类型的类别,然后是元素定义,它们具有关联的数值.
这样做的目的是,我可以检查输入字符串,如果它将输入中的子字符串标识为上面“字典”中的元素,则返回整数值.
提前致谢!
解决方法:
你不应该关心枚举本身的数值,你不应该依赖它们.原因是,如果将来您或其他人决定在枚举列表的中间添加新的枚举,那么您的所有数值现在都无效,您将不得不浏览代码并进行更改.因此,最好依赖于实际的枚举而不是枚举的数值.
如果您正在尝试将枚举“组合”在一起(如果我正确理解您的问题),您可以使用类似标记界面的内容.例如,您可以:
public interface Operators {
}
public enum BooleanOperators implements Operators {
AND, OR, NOT, XOR
}
public enum ArithmeticOperators implements Operators {
ADD, SUBTRACT, MULTIPLY, DIVIDE
}
然后,不是有两个方法,一个接受类型为BooleanOperators的枚举,另一个接受ArithmeticOperators类型的方法,你可以使用一个接受类型操作符的方法:
public void doSomethingWithOperators(Operators operators) {
....
}
如果要将显式值绑定到枚举,可以采用安全的方法:
public interface Operators {
int getCode();
}
public enum BooleanOperators implements Operators {
private int code;
AND(1), OR(2), NOT(3), XOR(4)
private BooleanOperators(int code) {
this.code = code;
}
public int getCode() {
return this.code;
}
}
然后你可以做ArithmeticOperators.ADD.getCode(),它将返回与该枚举相关的代码.此方法更安全,因为您可以看到与枚举显式关联的值与基于其定义顺序隐式关联的值.因此,当您或其他人添加新枚举时,他们应该将一个(希望是唯一的)整数值与新枚举相关联.
注意:在这种情况下,标记接口并不是绝对必要的;它只是强制要求所有实现接口的枚举应具有getCode()方法.以下内容同样有效:
public enum BooleanOperators {
private int code;
AND(1), OR(2), NOT(3), XOR(4)
private BooleanOperators(int code) {
this.code = code;
}
public int getCode() {
return this.code;
}
}
我认为这就是你想要的.如果没有,请告诉我!
编辑
根据你的评论,我会使用一个标记界面(让我们称之为令牌)应用于你的所有枚举,然后使用Map< String,Token>类型的地图.您将使用您的标记和相应的枚举初始化此地图.当解析器返回标记时,您可以使用地图查找枚举.
内容总结
以上是互联网集市为您收集整理的枚举Java的最佳方法全部内容,希望文章能够帮你解决枚举Java的最佳方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。