在编码时,两个Enum实例,直接用==就可以比较它们的值了,而不是比较这两个Object的地址。这显然和通常的Object不一样。而且,在JDK7之后,枚举还能用在switch-case开关语句中。
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并没有什么特殊之处。
分享到:
相关推荐
Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...
C语言enum枚举类型解析共13页.pdf.zip
本文实例总结了python模拟enum枚举类型的方法。分享给大家供大家参考。具体分析如下: python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型 方法1. 使用自定义类 class...
java中enum枚举的详细用法。 0.0
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
ava enum 枚举的spring boot2.x完美实现demo源码。java的枚举类型,可以理解为一种特殊的java类
java enum详细教程。由浅入深,包括基本语法方面..很适合新手学习。/n各位看官。绝对超值。
enum枚举的方法
以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码 代码如下: # way1 class Directions: up = 0 down = 1 left = 2 right =3 print Directions.down # way2 dirUp, dirDown, dirLeft, dirRight =...
主要介绍了JavaScript enum枚举类型定义及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
给刚学C#的同学一些帮助 public enum CardColor : byte { 红桃, 方片, 梅花, 黑桃, }
java enum枚举教程学习资料
10-enum枚举
java高级编程 Enum枚举 包括枚举的例子,问题 及一些文档,是复习的好资源
enum枚举类的一些代码demo
C++中枚举类型(enum)
包含了关于枚举类的应用,以及枚举类和接口的组合应用,扩展映射关系。很有用的工具类。
java简单的 enum枚举类介绍