Java 枚举类型使用小技巧

简介:

 最近用到枚举,由于枚举变量比较多且存在一定的分组分类的关系,所以想能比较清晰的维护这些变量。今晚有空,简单研究了一下,分享出来,供大家讨论。

可供考虑的分类方式

 
  1. /** 
  2.  * 枚举接口 
  3.  *  
  4.  * @author lihzh(苦逼coder) 
  5.  * @data 2012-2-21 下午8:51:39 
  6.  */ 
  7. public interface EnumInter { 
  8.  
  9.     public enum EnumB implements EnumInter{ 
  10.         B1, B2, B3; 
  11.         public enum EnumSubB implements EnumInter{ 
  12.             C1, C2, C3 
  13.         } 
  14.     } 

调用方式和一些其他测试:

 
  1. /** 
  2.  * 测试练习枚举用法 
  3.  *  
  4.  * @author lihzh(苦逼coder) 
  5.  * @data 2012-2-21 下午8:49:41 
  6.  */ 
  7. public class EnumMain { 
  8.  
  9.     /** 
  10.      * @param args 
  11.      * @author lihzh 
  12.      * @data 2012-2-21 下午8:49:41 
  13.      */ 
  14.     public static void main(String[] args) { 
  15.         // 遍历枚举 
  16.         for (EnumDemo e : EnumDemo.values()) { 
  17.             System.out.println("EnumDemo values: " + e.name()); 
  18.         } 
  19.         // 枚举集合,简介 
  20.         EnumMap<EnumDemo, String> enumMap = new EnumMap<EnumDemo, String>( 
  21.                 EnumDemo.class); 
  22.         enumMap.put(EnumDemo.A, "AAA"); 
  23.         // 定义函数 
  24.         System.out.println(EnumDemo.A.getValue()); 
  25.         System.out.println(EnumDemo.E.getValue()); 
  26.         // 使用接口分组枚举 
  27.         EnumInter eInter = EnumInter.EnumB.B2; 
  28.         EnumInter eInterB = EnumInter.EnumB.EnumSubB.C1; 
  29.         printValue(eInter); 
  30.         printValue(eInterB); 
  31.     } 
  32.  
  33.     private static void printValue(EnumInter eInter) { 
  34.         System.out.println(eInter.toString()); 
  35.     } 
  36.  
  37.     public enum EnumDemo implements EnumInter { 
  38.         A, B, C, D, E; 
  39.         public String getValue() { 
  40.             return "Value is: " + this.name(); 
  41.         } 
  42.     } 
  43.  

主要是27,28行的调用方式。可体现出分组的效果。方法接口参数,统一接受接口类型即可。




     本文转自mushiqianmeng 51CTO博客,原文链接:http://blog.51cto.com/mushiqianmeng/786140,如需转载请自行联系原作者



相关文章
|
1月前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
116 60
|
3月前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
67 9
Java——反射&枚举
|
3月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
86 5
|
3月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
178 1
|
4月前
|
Java
Java枚举使用的基本案例
这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
|
4月前
|
Java 开发者
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
64 2
|
4月前
|
安全 Java 编译器
|
5月前
|
存储 缓存 Java
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
|
5月前
|
安全 Java
Java进阶之枚举
【7月更文挑战第11天】Java枚举是Java 5引入的特性,用于定义固定常量集合,如星期。枚举是继承自`java.lang.Enum`的特殊类,编译后成为final类,每个枚举值是静态final实例。定义枚举用`enum`关键字,如`public enum Weekday {MONDAY, TUESDAY, ...}`。枚举可包含方法和变量,能实现接口但不能继承其他类。例如,`Weekday`枚举可实现`Describe`接口,提供`describe()`方法。在实际应用中,枚举常用于表示如响应状态等固定选项,便于类型安全和代码阅读。
41 8
|
4月前
|
Java Apache 开发者
Java常用的小技巧
这篇文章记录了Java开发中的一些常用小技巧,包括如何获取指定时间的时间戳、获取当前时间的时间戳、时间对象的格式化输出、使用Apache Commons Lang库中的`StringUtils`工具类来查找字符在字符串中的正数或倒数出现的位置、处理HTTP请求中因中文查询参数导致的问题,以及如何使用`BeanUtils`和`ReflectionUtils`来复制实体类属性值到视图类。文章提供了每个技巧对应的示例代码,以帮助开发者快速理解和应用这些技巧。
21 0