Java枚举enum : 简单枚举与自定义枚举的入门使用
2018-02-27 17:56
627 查看
1.简单枚举
场景:水果类型有苹果、橘子和香蕉。
代码:
/** * 简单枚举 * @author hanchao */ enum Fruit{ APPLE,ORANGE,BANANA } public static void main(String[] args) throws Exception{ //测试简单枚举 LOGGER.info("测试简单枚举"); LOGGER.info("获取一个枚举值" + Fruit.APPLE.getClass().toString() + " : " + Fruit.APPLE); //通过Fruit.values()获取枚举值数组 for (Fruit fruit : Fruit.values()) { LOGGER.info("遍历枚举--" + fruit.getClass().toString() + " : " + fruit); } }
结果:
2018-02-27 17:30:42 INFO QxtMessageUtils:209 - 测试简单枚举 2018-02-27 17:30:42 INFO QxtMessageUtils:210 - 获取一个枚举值class com.sx.ldlsc.common.QxtMessageUtils$Fruit : APPLE 2018-02-27 17:30:42 INFO QxtMessageUtils:213 - 遍历枚举--class com.sx.ldlsc.common.QxtMessageUtils$Fruit : APPLE 2018-02-27 17:30:42 INFO QxtMessageUtils:213 - 遍历枚举--class com.sx.ldlsc.common.QxtMessageUtils$Fruit : ORANGE 2018-02-27 17:30:42 INFO QxtMessageUtils:213 - 遍历枚举--class com.sx.ldlsc.common.QxtMessageUtils$Fruit : BANANA
2.自定义枚举
场景:返回值与返回消息:1代表成功,0代表经过,-1代表失败。
代码:
/** * 自定义枚举 * @author hanchao */ public enum CodeAndMessage { /** * 设置枚举值,注意与后面的field字段对应 */ SUCCESS(1,"成功"), WARNING(0,"警告"), ERROR(-1,"报错"); private int code; private String message; @Override public String toString() { return this.name() + "(" + this.code + "," + this.message + ")"; } /** * 根据code获取message * @param code * @return */ public static String getMessage(int code){ //通过enum.values()获取所有的枚举值 for(CodeAndMessage codeAndMessage : CodeAndMessage.values()){ //通过enum.get获取字段值 if(codeAndMessage.getCode() == code){ return codeAndMessage.message; } } return null; } /** * 根据code获取CodeAndMessage * @param code * @return */ public static CodeAndMessage getCodeAndMessage(int code){ for(CodeAndMessage codeAndMessage : CodeAndMessage.values()){ if(codeAndMessage.getCode() == code){ return codeAndMessage; } } return null; } private CodeAndMessage(int code, String message) { this.code = code; this.message = message; } // setter and getter } public static void main(String[] args) throws Exception{ //测试自定义枚举 System.out.println(); LOGGER.info("测试自定义枚举"); LOGGER.info("获取一个枚举值" + CodeAndMessage.SUCCESS.getClass().toString() + " : " + CodeAndMessage.SUCCESS); //通过CodeAndMessage.values()获取枚举值数组 for (CodeAndMessage codeAndMessage : CodeAndMessage.values()) { LOGGER.info("遍历枚举--" + codeAndMessage.getClass().toString() + " : " + codeAndMessage); } //通过code获取message LOGGER.info("通过code获取message: " + CodeAndMessage.getMessage(1)); //通过code获取枚举对象CodeAndMessage LOGGER.info("通过code获取枚举对象CodeAndMessage: " + CodeAndMessage.getCodeAndMessage(-1)); //通过枚举值获取枚举对象 LOGGER.info("通过enum.valueOf(name)获取枚举对象: " + CodeAndMessage.valueOf("SUCCESS")); LOGGER.info("通过Enum.valueOf(enumClass,name)获取枚举对象: " + Enum.valueOf(CodeAndMessage.class, "SUCCESS")); }
结果:
2018-02-27 17:53:46 INFO QxtMessageUtils:218 - 测试自定义枚举 2018-02-27 17:53:46 INFO QxtMessageUtils:219 - 获取一个枚举值class com.sx.ldlsc.common.QxtMessageUtils$CodeAndMessage : SUCCESS(1,成功) 2018-02-27 17:53:46 INFO QxtMessageUtils:222 - 遍历枚举--class com.sx.ldlsc.common.QxtMessageUtils$CodeAndMessage : SUCCESS(1,成功) 2018-02-27 17:53:46 INFO QxtMessageUtils:222 - 遍历枚举--class com.sx.ldlsc.common.QxtMessageUtils$CodeAndMessage : WARNING(0,警告) 2018-02-27 17:53:46 INFO QxtMessageUtils:222 - 遍历枚举--class com.sx.ldlsc.common.QxtMessageUtils$CodeAndMessage : ERROR(-1,报错) 2018-02-27 17:53:46 INFO QxtMessageUtils:225 - 通过code获取message: 成功 2018-02-27 17:53:46 INFO QxtMessageUtils:227 - 通过code获取枚举对象CodeAndMessage: ERROR(-1,报错) 2018-02-27 17:53:46 INFO QxtMessageUtils:229 - 通过enum.valueOf(name)获取枚举对象: SUCCESS(1,成功) 2018-02-27 17:53:46 INFO QxtMessageUtils:230 - 通过Enum.valueOf(enumClass,name)获取枚举对象: SUCCESS(1,成功)
3.简单总结
简单枚举没有什么可说的,下面对自定义枚举进行简单总结:通过enum.values()获取枚举数组。
通过enum.valueOf(name)获取枚举对象。
通过Enum.valueOf(enumClass,name)获取枚举对象。
设置枚举值其实调用的是全参数的构造函数。
建议重写toString()方法,以便打印信息。
建议手动编写根据某个字段获取枚举值的方法。
相关文章推荐
- java的枚举enum的简单使用
- Java JDBC简单入门之枚举(Enum)、泛型、反射、JDBC整合
- java 枚举的简单使用(enum)
- java枚举enum最简单的使用
- Java enum(枚举)的简单使用
- 有趣的Java - 简单使用enum实现策略模式Strategy
- Annotation & Enum :Java中注解和枚举的使用
- java enum(枚举)使用详解 + 总结
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- java htmlparser 简单使用入门
- C++11新特性(三)Strongly-typed enums 强类型枚举简单使用
- JAVA入门基础--浅谈枚举Enum类型
- Enum枚举 简单的使用
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- java enum(枚举)使用详解 + 总结
- Java中自定义枚举(Enum)项的值及int和Enum的互相转换
- java中Enum(枚举)的使用
- 经典java enum(枚举)使用详解与总结
- java使用enum自定义下标值
- java enum(枚举)使用详解 + 总结