`
lantian_123
  • 浏览: 1367707 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

enum(java中的枚举)

    博客分类:
  • Java
 
阅读更多

Java 中的枚举(enum

枚举就是一组有限数据的集合,比如:性别就可以用枚举表示,他们的元素分别为男、女,最多还加个未知或者人妖。

 

枚举也是一种特殊的类,与普通类的区别在于普通类在定义的时候不明确他将会有哪些实例对象存在,完全由程序员自己去生成实例,而枚举只是他的值在定义的时候就已经实例话了,如下面的枚举定义方式:

 

 

/**
 * 定义了颜色有红、绿、蓝三种颜色的枚举类型
 * @author lzjun
 *
 */
public enum Color {
	RED,GREEN,BLUE
}

枚举与类相同的地方在于,定义了一个枚举时,编译器同样会生成一个相关的类,这个类是继承的java.lang.Enum.

 

 

     System.out.println(Color.BLUE.getClass());
		
     System.out.println(Color.BLUE.getClass().getSuperclass());

 输出结果:class com.lzjun.Color

                class java.lang.Enum

从输出结果可以很明确的看出枚举本质上就是一个类,而他的父类是Enum.

既然是一个类的话,他就有类的特性,包括属性和方法。
		/**
		 * 三个static方法
		 */
		// 根据String类型参数返回一个枚举值
		System.out.println(Color.valueOf("BLUE"));  
		//返回该枚举中所有枚举值作为一个数组,顺序依然按照初始化的状态存放
		System.out.println(Color.values());       
		//此方法继承与Enum中的valueOf方法,作用与第一个方法类似,具体使用可以参看jdk文档
		System.out.println(Color.valueOf(Color.class, "RED")); 
		
 实例方法,继承自Enum
                Color.BLUE.compareTo(Color.GREEN);  //比较枚举的顺序
		Color.BLUE.name();       //返回枚举的名称
		Color.BLUE.ordinal();    //返回该枚举值在枚举定义时的位置
 我们可以查看Enum的源码可以看出:
1、Enum类为抽象的
2、该类中没有ValueOf(String)方法和Values()方法
那么我们是否自己可以写一个继承Enum类的类呢,答案是否定的,编译器根本不允许你这么干,难道Enum就成摆设了?
我们可以尝试去反编译Color,看看创建一个枚举的时候,编译器究竟帮我们做了什么事情?
public final class com.lzjun.Color extends java.lang.Enum{
    public static final com.lzjun.Color RED;
    public static final com.lzjun.Color GREEN;
    public static final com.lzjun.Color BLUE;
    static {};
    public static com.lzjun.Color[] values();
    public static com.lzjun.Color valueOf(java.lang.String);
}
 从代码看出其实这个Enum类是用来被继承的。
当然同样可以和普通类一样的去使用,除继承之外
/**
 * 任意的扩展此枚举类
 * @author lzjun
 *
 */
public enum Color implements SomeInterface{
	RED,GREEN,BLUE("蓝色");
	private String description;
	private Color(){};
	
	private Color(String description){
		this.description  = description;
	}
	@Override
	public String toString() {
		return description;
	}
	
	public static void main(String[] args) {
		System.out.println(BLUE);
	}
}
 

enum还有一个重要的特点是就是可以用于switch语句。当然jdk7包括字符串在内的类型也能用于switch这个多路分支判断语句。

 

enum既然是一个集合,但遗憾的是他不能改变大小,就像数组一样,于是就诞生了EnumSet类,这样我们就可以像集合一样对他做CURD操作了.

 

分享到:
评论
1 楼 dingding5060 2011-08-24  
没太看懂

相关推荐

    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 枚举 学习资料

    Java Enum 枚举学习资料是 Java 编程语言中的一种特殊类型,它主要用来实现一组固定的常量。 Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型...

    Java枚举类型Enum的用法

    在枚举内部,可以通过`Enum<E extends Enum<E>>`的泛型方法`getDeclaringClass()`获取枚举常量所属的枚举类,以及`name()`和`ordinal()`方法获取常量的名称和在枚举中的位置。 总结来说,Java枚举类型提供了一种...

    java中enum枚举的详细用法

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

    JAVA高级编程中Enum枚举

    5. **枚举常量的自然顺序**:枚举常量按照声明的顺序进行排序,可以用`ordinal()`方法获取其在枚举中的位置。 在实际编程中,枚举可以用于实现模式匹配、单例模式等多种设计模式。例如,可以定义一个状态枚举来表示...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

    高阶Java-Java枚举类型 enum 应用详解

    本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...

    java enum枚举教程学习资料

    Java枚举(enum)是Java语言提供的一种特殊的数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中是类的子类型,因此,它们具备类的一些特性,比如可以有方法、变量以及实现接口。...

    java 中枚举类enum的values()方法的详解

    Java 中枚举类 enum 的 values() 方法详解 Java 中的枚举类 enum 是一种特殊的类,通过使用 enum 关键字来定义。枚举类 enum 中有一个特殊的方法,values(),这个方法可以将枚举类转换为一个枚举类型的数组。通过...

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

    Java枚举支持单例模式,因为每个枚举常量都是唯一的,不能通过`new`关键字实例化。此外,枚举类型的枚举常量可以按照声明顺序自然排序,这使得它们在处理有序数据时非常方便。 枚举类型还可以与其他集合框架结合...

    java中枚举的使用

    在枚举中,我们可以定义方法,这些方法可以是抽象的,也可以包含具体实现。例如,我们可以定义一个返回枚举常量名称的方法: ```java public enum Color { RED, GREEN, BLUE; public String getName() { return...

    java enum 枚举的spring boot2.x完美实现demo源码

    以下是如何在枚举中定义属性和方法的一个例子: ```java public enum Status { ACTIVE("活跃"), INACTIVE("非活跃"); private String description; Status(String description) { this.description = ...

    全面掌握java枚举类型(enum-type)1

    Java 中使用关键字 enum 来定义一个枚举类型。例如: ```java public enum Season { SPRING, SUMMER, AUTUMN, WINTER; } ``` 特点 Java 定义枚举类型的语句很简约。它有以下特点: 1. 使用关键字 enum 2. 类型...

    enum枚举的方法

    enum枚举的方法

    Java关于中文乱码问题的多种解决方法

    在Java编程中,中文乱码问题是一个常见的困扰,尤其是在处理文件读写、网络传输或数据库操作时。本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中...

    java枚举类型enum的使用

    1. **不可变性**:枚举中的元素是 `final` 和 `public` 的,这意味着它们一旦被创建就无法被修改。 2. **唯一性**:每个枚举常量都是该枚举类型的实例,并且这些实例在整个程序运行过程中只存在一次。 3. **类型安全...

    Java中的Enum枚举用法.doc

    - 枚举中的每个元素都是该类型的实例,它们是类的成员,并且默认是静态和final的。 - 枚举类型自动继承自`java.lang.Enum`类,这意味着它们可以直接使用`Enum`类提供的方法,而无需显式地继承。 2. **枚举的好处...

    计算机后端-Java-Java核心基础-第23章 枚举类与注解 06. 使用enum关键字定义枚举类.avi

    计算机后端-Java-Java核心基础-第23章 枚举类与注解 06. 使用enum关键字定义枚举类.avi

Global site tag (gtag.js) - Google Analytics