`
junworld
  • 浏览: 1536 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java枚举总结

阅读更多
  • 枚举是什么?为什么要用枚举?

    JDK1.5开始加入枚举新特性,在开发中有时会遇到需要一些数据集,而这些数据集是固定的几个值,为了让用到的变量只能是这些固定的几个值。枚举就发挥了作用。以便提高开发效率,增强程序规范。

  • 枚举的用法

    1.普通枚举
public class TestEnum {
    /*普通枚举*/
    public enum EnumSeason {
        SPRING,SUMMER,AUTUMN,WINTER ;/*此行定义元素列表 为枚举类的静态变量 必须放在枚举类的第一行*/
    }
    public static void main(String args[]){
        EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类
        System.out.println(enumSeason.name());
        System.out.println(enumSeason);
        System.out.println(enumSeason.toString());
    }
}

运行结果:
SUMMER
SUMMER
SUMMER

    由于枚举重写了Object的toString方法,所有enumSeason.toString()返回的就是枚举对应的name


    2.带构造器的枚举
public class TestEnum {
    /*带构造方法的枚举*/
    public enum EnumSeason {
        SPRING(0),SUMMER,AUTUMN,WINTER ;/*如果此行代码后面还有代码,此处最后的“;”必须写,如果没有可以省略*/
        private EnumSeason(){//枚举构造方法必须是私有,这样才能保障只有内部调用
            System.out.println("无参构造方法");
        }
        private EnumSeason(int n){
            System.out.println("有参构造方法");
        }
    }
    public static void main(String args[]){
        EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类
    }
}


运行结果:
有参构造方法
无参构造方法
无参构造方法
无参构造方法

在枚举类加载的时候会调用所有静态枚举列表,因此我们知道枚举的元素列表可以分别调用不同的构造方法

    3.带有抽象方法的枚举
public class TestEnum {
    /*带抽象方法的枚举*/
    public enum EnumSeason {
        SPRING(0){ //元素列表是EnumSeason类型的对象
            public String getSeasonName(){
                return "spring";
            }
        },
        SUMMER(1){
            public String getSeasonName(){
                return "summer";
            }
        },
        AUTUMN(2){
            public String getSeasonName(){
                return "autumn";
            }
        },
        WINTER(3){
            public String getSeasonName(){
                return "winter";
            }
        };
        public abstract String getSeasonName();//此处定义抽象方法
        private int seasonValue;
        private EnumSeason(int seasonValue){
            this.seasonValue = seasonValue;
        }
    }
    public static void main(String args[]){
        EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类;
        System.out.println(enumSeason.getSeasonName());
        System.out.println(enumSeason.seasonValue);
    }
}

运行结果:
summer
1

枚举的元素列表,相当于就是枚举的一个实例对象,创建类的实例对象,必须实现该类的抽象方法,也就是一个抽象类必须由它的子类创建实例对象,子类必须实现父类的抽象方法。



打开编译目录可以知道,在这个例子中SPRING,SUMMER,AUTUMN,WINTER都是EnumSeason的具体实现类。


    4.switch对枚举的支持
在JDK1.5之前switch仅支持byte,short,char,int。在JDK1.5加入枚举之后,switch也支持了枚举类型。在JDK1.7 switch又支持了String类型


public class EnumTest {
    /*带抽象方法的枚举*/
    public enum EnumSeason {
        SPRING(0){ //元素列表是EnumSeason类型的对象
            public String getSeasonName(){
                return "spring";
            }
        },
        SUMMER(1){
            public String getSeasonName(){
                return "summer";
            }
        },
        AUTUMN(2){
            public String getSeasonName(){
                return "autumn";
            }
        },
        WINTER(3){
            public String getSeasonName(){
                return "winter";
            }
        };
        public abstract String getSeasonName();//此处定义抽象方法
        private int seasonValue;
        private EnumSeason(int seasonValue){
            this.seasonValue = seasonValue;
        }
    }

    public static void main(String args[]){
        EnumSeason enumSeason = EnumSeason.SUMMER;//返回的是一个枚举类;
        switch (enumSeason){
            case SPRING:
                System.out.println("spring");
                break;
            case SUMMER:
                System.out.println("summer");
                break;
            case AUTUMN:
                System.out.println("autumn");
                break;
            case WINTER:
                System.out.println("winter");
                break;
        }
    }
}


运行结果:
summer


枚举提供了丰富的方法,可以参考JDK文档,这里就不多做介绍

  • 总结:

    enum关键字其实就是创建一个类,而这个类就是java.lang.Enum的子类,实现了Enum的方法,枚举提高了程序的安全性,代替了传统的定义常量的方式。
如果在程序中想要用到单例模式,枚举是个不错的选择,可以定义一个元素列表,因为枚举的构造方法必须是私有的,也就是外部不能创建对象,从而保障了单例。Enum还实现了Comparable和Serializable,所以枚举之间是可以进行比较的,并且可以被序列化

  • 描述: Enum toString()
  • 大小: 13.5 KB
  • 大小: 4.1 KB
分享到:
评论

相关推荐

    java枚举实例代码

    总结来说,Java枚举提供了一种安全、可读的方式来处理一组预定义的常量。通过枚举,我们可以避免硬编码常量,减少错误,提高代码的可维护性。在实际开发中,枚举常用于定义状态、角色、类型等固定集合的场景。通过...

    简单总结java枚举类型

    Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...

    Java枚举类型Enum的用法

    总结来说,Java枚举类型提供了一种安全、类型安全的方式来定义和使用常量,它可以拥有构造器、方法和字段,并能与switch语句、序列化、反射等Java特性很好地结合。理解并熟练使用枚举,能够使代码更加清晰、易读,...

    java枚举类型说明

    ### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...

    java 枚举类总结

    ### Java 枚举类总结 #### 一、概述与基本概念 枚举类型(`enum`)是Java中的一种特殊类,它允许开发者定义一组命名的常量,并将其视为一个独立的类型。从JDK 1.5版本开始,Java引入了枚举类型,它提供了一种更加...

    理解java枚举类型

    总结,Java枚举类型是一种强大的工具,可以用于表示固定数量的常量。它们提供了一种安全、类型化的方式,避免了硬编码常量,增加了代码的可读性和可维护性。通过构造函数、方法、接口实现等特性,枚举可以适应各种...

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

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

    Java枚举类型.pdf

    总结起来,Java枚举类型是一个强大的工具,它可以替代`static final`常量来表示一组固定的值,提供类型安全、易于维护的代码。通过枚举,我们可以更方便地管理常量,减少错误,并增加代码的灵活性。枚举是Java中一个...

    java枚举,以及自己总结的两个示例.xmind

    如有侵权请联系删除,欢迎批评指正 java枚举,起初在网上抄了一部分,然后自己加了点示例,做一个记录,也算是为以后留个备份,技术小白一个,还在努力成长

    JAVA枚举类型的用法详解

    总结起来,Java枚举类型提供了丰富的功能,包括但不限于定义常量、属性、方法,以及实现抽象方法。这种类型使得代码更加规范,提高了代码的可读性和可维护性,减少了错误的可能性。在处理一组固定不变的值时,使用...

    java-枚举总结【从入门到项目总结】

    关于java枚举的总结: 从入门介绍到项目使用的实际经验归纳总结得出! 从jdk5到jdk8!

    Java中的“枚举类型

    ### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...

    谈谈你可能并不了解的java枚举

    本文将深入探讨Java枚举的一些鲜为人知的特性。 1. 枚举默认值与自定义值: Java枚举的默认值是从0开始的整数序列,如示例中的Color枚举。然而,我们可以通过自定义构造函数为每个枚举实例赋予特定的值,如...

    Java高新技术_java5的枚举的基本应用

    Java枚举可以实现接口,也可以拥有字段和方法,因此可以用来创建复杂的枚举集。例如,可以定义一个表示星期几的枚举,并为每个枚举值添加额外的属性或行为: ```java public enum DayOfWeek implements Comparable...

    Java枚举的七种常见用法总结(必看)

    下面是Java枚举的七种常见用法的详细说明: 1. 常量用法: 在Java中,枚举可以用于组织一组相关的常量。在JDK 1.5之前,我们通常使用`public static final`关键字来定义常量,但这种方式不够灵活。枚举提供了一种...

    java 枚举(enum) 详解(学习资料)

    总结来说,Java 枚举提供了一种强类型、安全且易于使用的机制,用于表示一组固定数量的值。它简化了代码,提高了程序的可读性和可维护性,同时也避免了传统的常量类或单例模式的一些潜在问题。通过深入理解和灵活...

    java枚举是如何保证线程安全的

    总结来说,Java枚举的线程安全性主要源于以下几点: 1. 枚举类是final的,不能被继承,防止了子类化导致的多实例问题。 2. 枚举实例在类加载时即被创建,类加载过程是线程安全的。 3. 静态常量的初始化在类加载阶段...

    java 枚举遍历键值对 属性类Properties 类加载器

    总结来说,Java的枚举提供了一种安全的方式来定义和管理一组相关的常量,便于遍历和操作。Properties类则用于处理键值对数据,常用于配置文件的读取和写入。类加载器则帮助我们找到并加载类及其相关的资源,如...

    Java枚举数据类型.doc

    总结来说,Java枚举类型是为了解决传统整型枚举模式的不足而设计的,它提供了类型安全、良好的可读性和可扩展性,是编写高质量Java代码的重要工具。在实际开发中,应优先考虑使用枚举类型来定义固定的、有限的选项...

Global site tag (gtag.js) - Google Analytics