Enum枚举类型比值
来源:互联网 发布:青岛海岸线网络传销 编辑:程序博客网 时间:2024/04/29 20:50
在编码时,两个Enum实例,直接用==就可以比较它们的值了,而不是比较这两个Object的地址。这显然和通常的Object不一样。而且,在JDK7之后,枚举还能用在switch-case开关语句中。
Enum不是primitive类型,却可以用==比较,这是为什么呢?Enum本身可以是多实例的,关键在于,它的每个值对应唯一的Object,因此,它有几个值,就生成几个实例。所有相关的变量都是代表这几个实例的,自然要么==,要么!=,比较值和比较地址是一样的。
看下面的例程:
Enum不是primitive类型,却可以用==比较,这是为什么呢?Enum本身可以是多实例的,关键在于,它的每个值对应唯一的Object,因此,它有几个值,就生成几个实例。所有相关的变量都是代表这几个实例的,自然要么==,要么!=,比较值和比较地址是一样的。
看下面的例程:
public enum AA{ aa; public static void main(String[] args) throws Exception{ Constructor<?> constructor = AA.class.getDeclaredConstructors()[0]; Method method = Constructor.class.getDeclaredMethod("acquireConstructorAccessor"); method.setAccessible(true); method.invoke(constructor); Field field = Constructor.class.getDeclaredField("constructorAccessor"); field.setAccessible(true); ConstructorAccessor accessor = (ConstructorAccessor) field.get(constructor); AA aa1 = (AA) accessor.newInstance(new Object[]{"aa", 0}); AA aa2 = AA.aa; System.out.println(aa1.ordinal() == aa2.ordinal()); System.out.println(aa1 == aa2); } }在程序中,使用反射机制创建了两个枚举对象并使用==进行比较,从而说明Enum并没有什么特殊之处。
0 0
- Enum枚举类型比值
- Java enum 枚举类型
- C#枚举类型enum
- C#枚举类型enum
- C#枚举类型enum
- enum枚举类型学习
- JAVA枚举类型Enum
- 枚举类型-enum使用
- C枚举类型enum
- C枚举类型enum
- 枚举类型------enum
- Enum 枚举类型
- [Java] enum 枚举类型
- Java enum 枚举类型
- c# 枚举 enum 类型
- java enum 枚举类型
- c++ 枚举类型 enum
- enum枚举类型
- Myeclipse中java项目转成Web项目
- ZOJ 3710Friends(暴力)
- ROS launch file 写法
- 嵌入式系统分类
- ZOJ 3712Hard to Play(模拟)
- Enum枚举类型比值
- 【高效生活】从ER图到数据库的一条龙服务
- NDK开发的工程无法在虚拟机打开,真机可以正常打开
- ZOJ 3713In 7-bit(模拟)
- VS2013 解决方案下所有项目统一配置
- iOS模态视图从N级退回到第一级方法
- Android登录页面的最佳实践
- Tomcat内存溢出的三种情况及解决办法分析
- gc 垃圾回收机制