`
sharong
  • 浏览: 493286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
D1667ae2-8cfc-3b68-ac7c-5e282789fa4a
论开源
浏览量:8719
7eb53364-fe48-371c-9623-887640be0185
Spring-data-j...
浏览量:13059
社区版块
存档分类
最新评论

Enum枚举类型比值

阅读更多
在编码时,两个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并没有什么特殊之处。
1
2
分享到:
评论

相关推荐

    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枚举类Java SE程序 Enum枚举类...

    java enum 枚举 学习资料

    Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型是用 enum 关键字来定义的。枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,...

    Java枚举类型Enum的用法

    Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...

    C语言enum枚举类型解析共13页.pdf.zip

    枚举类型以`enum`关键字开始,后跟枚举名,然后是花括号{},里面列举出枚举常量。例如: ```c enum Color {Red, Green, Blue}; ``` 这里定义了一个名为`Color`的枚举类型,包含三个枚举常量:Red、Green和Blue...

    python模拟enum枚举类型的方法小结

    本文实例总结了python模拟enum枚举类型的方法。分享给大家供大家参考。具体分析如下: python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型 方法1. 使用自定义类 class...

    java中enum枚举的详细用法

    Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...

    enum枚举的方法

    enum枚举的方法

    Python中模拟enum枚举类型的5种方法分享

    以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码 代码如下: # way1 class Directions:  up = 0  down = 1  left = 2  right =3   print Directions.down # way2 dirUp, dirDown, dirLeft, dirRight =...

    C#利用enum枚举类型写发牌系统

    给刚学C#的同学一些帮助 public enum CardColor : byte { 红桃, 方片, 梅花, 黑桃, }

    Java中的枚举类型Enum示例源代码

    Java中的枚举类型`Enum`是面向对象编程中一种强大的工具,它允许程序员定义自己的常量集合。在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`...

    JAVA高级编程中Enum枚举

    在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,特别是在需要表示一组固定值时,如状态、颜色、星期等。本资源包提供了一些关于`Enum`...

    C++中枚举类型(enum)

    ### C++中的枚举类型(Enum) 在C++编程语言中,枚举(`enum`)是一种用户定义的类型,它由一组具有整数值的命名常量组成。这些值可以被程序用来代替数字,使代码更具可读性,并且能够表示特定范围内的固定集合。 ...

    7enum枚举字函数程序案例VC共4页.pdf.zip

    【7enum枚举字函数程序案例VC共4页.pdf】 这个压缩包文件包含了一个关于“7enum枚举字函数”的程序案例,适用于Visual C++(VC)开发环境。7enum,顾名思义,可能是一种自定义的枚举类型或者一个特定的枚举工具,...

    10-enum枚举.ts

    10-enum枚举

    JavaScript enum枚举类型定义及使用方法

    JavaScript中的枚举类型(enum)并不是语言内建的特性,如C#或Java等其他语言。然而,开发者可以通过模拟枚举的行为来实现类似的功能。在JavaScript中,我们通常使用对象(object)来模拟枚举,就像示例代码中所示。...

    C++枚举类型enum与enum class的使用

    在C++中,枚举类型分为不限定作用域(enum)和限定作用域(enum class)。 2. enum与enum class的区别? (为什么需要限定作用域?) 答:枚举作用域是指枚举类型成员名字的作用域,起自其声明之处,终止枚举定义...

    java枚举类型enum的使用

    ### Java 枚举类型 enum 的使用详解 #### 一、枚举类型概述 在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来...

    springboot项目中枚举类型的最佳实践

    在Spring Boot项目中,枚举类型(Enums)的使用是一种常见...以上所述内容,都是在`springboot-enum-demo-master`项目中可以找到的实际应用示例,可以帮助开发者更好地理解和实现Spring Boot项目中枚举类型的高效使用。

    Python中的枚举类型:使用Enum类的详细指南

    在Python中,枚举类型通过enum模块中的Enum类来实现,这使得代码更加清晰、易于维护,并且可以避免魔术数字和字符串的滥用。本文将详细介绍如何在Python中使用枚举类型,包括枚举的基础概念、创建和使用枚举类的步骤...

    enum枚举类的应用

    包含了关于枚举类的应用,以及枚举类和接口的组合应用,扩展映射关系。很有用的工具类。

Global site tag (gtag.js) - Google Analytics