Java实例讲解枚举enum的实现

目录
  • 一.枚举介绍
    • 1.自定义枚举实现
      • (1)示例
      • (2)测试结果
    • 2.enum关键字实现枚举
      • (1)示例
      • (2)测试结果
    • 3.enum关键字注意事项
      • (1)示例

一.枚举介绍

1.枚举是一组常量的集合

2.理解:美剧属于一种特殊的类,里面只包含一组有限的特定的对象

1.自定义枚举实现

1.不需要提供Set方法,枚举对象值通常为只读。

2.对枚举对象/属性使用final和static关键字修饰,实现底层优化

3.枚举对象名通常使用全部大写,常量的命名规范

4.枚举·对象根据需要,可以有一到多个属性

(1)示例

package com.demo;
import javax.sound.midi.Soundbank;
/**
 * @version 1.0
 * @auther Demo龙
 */
public class Enum01 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);
    }
}
//演示自定义枚举实现
class Season{
    private String name;
    private String desc;//描述特性
    //1.将构造器私有化,目的防止直接new出来
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    //2.去掉set方法,只能读取,不能修改属性
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
    //3.在season内部创建固定的对象
    //定义了四个对象
//    public static Season SPRING=new Season("春天","温暖");
//    public static Season SUMMER=new Season("夏天","炎热");
//    public static Season AUTUMN=new Season("秋天","凉爽");
//    public static Season WINTER=new Season("冬天","寒冷");
    //最终优化,加入final
    public static final Season SPRING=new Season("春天","温暖");
    public static final Season SUMMER=new Season("夏天","炎热");
    public static final Season AUTUMN=new Season("秋天","凉爽");
    public static final Season WINTER=new Season("冬天","寒冷");
    //重写toString方法
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

(2)测试结果

2.enum关键字实现枚举

如果使用enum关键字来实现枚举类

1.使用关键字enum替换class

2.public static final Season02 SPRING=new Season02(“春天”,“温暖”);可替换为 SPRING(“春天”,“温暖”),//解读:常量名(实参列表)

3.如果有多个常量使用逗号间隔即可

4.如果使用enum关键字实现枚举,要求将定义的常量对象写下前面

(1)示例

package com.demo;
/**
 * @version 1.0
 * @auther Demo龙
 */
public class Enum02 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);
    }
}
//演示使用enum关键字来实现枚举类
enum Season02{
    //如果使用enum关键字来实现枚举类
    //1.使用关键字enum替换class
    //2.public static final Season02 SPRING=new Season02("春天","温暖");可替换为
    SPRING("春天","温暖"),//解读:常量名(实参列表)
    //3.如果有多个常量使用逗号间隔即可
    SUMMER("夏天","炎热"),
    AUTUMN("秋天","凉爽"), WINTER("冬天","寒冷");
    //4.如果使用enum关键字实现枚举,要求将定义的常量对象写下前面
    private String name;
    private String desc;//描述特性
    //1.将构造器私有化,目的防止直接new出来
    private Season02(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    //2.去掉set方法,只能读取,不能修改属性
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
    //3.在season内部创建固定的对象
    //定义了四个对象
//    public static Season SPRING=new Season("春天","温暖");
//    public static Season SUMMER=new Season("夏天","炎热");
//    public static Season AUTUMN=new Season("秋天","凉爽");
//    public static Season WINTER=new Season("冬天","寒冷");
    //最终优化,加入final
//    public static final Season02 SPRING=new Season02("春天","温暖");
//    public static final Season02 SUMMER=new Season02("夏天","炎热");
//    public static final Season02 AUTUMN=new Season02("秋天","凉爽");
//    public static final Season02 WINTER=new Season02("冬天","寒冷");
    //重写toString方法
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

(2)测试结果

3.enum关键字注意事项

1.当我i们使用enum关键字开发一个枚举类时,默认会继承Enum类

2.传统的public static final Season02 SPRING=new Season02("春天","温暖");,这里要知道他调用的是哪个构造器

3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略.

4.当有多个枚举对象时,使用逗号间隔,最后有一个分号结尾

5.枚举对象必须放在枚举类的行首

(1)示例

package com.demo;
/**
 * @version 1.0
 * @auther Demo龙
 */
public class Enum02 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);
    }
}
//演示使用enum关键字来实现枚举类
enum Season02{
    //如果使用enum关键字来实现枚举类
    //1.使用关键字enum替换class
    //2.public static final Season02 SPRING=new Season02("春天","温暖");可替换为
    SPRING("春天","温暖"),//解读:常量名(实参列表)
    //3.如果有多个常量使用逗号间隔即可
    SUMMER("夏天","炎热"),
    AUTUMN("秋天","凉爽"), WINTER("冬天","寒冷"),
    //3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略.两种写法
    HAHA,//调用无参构造器
    HAHAHA();//调用无参构造器
    //4.如果使用enum关键字实现枚举,要求将定义的常量对象写下前面
    private String name;
    private String desc;//描述特性
    //1.将构造器私有化,目的防止直接new出来
    private Season02(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    private Season02() {
        //无参构造器
    }
    //2.去掉set方法,只能读取,不能修改属性
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
    //3.在season内部创建固定的对象
    //定义了四个对象
//    public static Season SPRING=new Season("春天","温暖");
//    public static Season SUMMER=new Season("夏天","炎热");
//    public static Season AUTUMN=new Season("秋天","凉爽");
//    public static Season WINTER=new Season("冬天","寒冷");
    //最终优化,加入final
//    public static final Season02 SPRING=new Season02("春天","温暖");
//    public static final Season02 SUMMER=new Season02("夏天","炎热");
//    public static final Season02 AUTUMN=new Season02("秋天","凉爽");
//    public static final Season02 WINTER=new Season02("冬天","寒冷");
    //重写toString方法
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

到此这篇关于Java实例讲解枚举enum的实现的文章就介绍到这了,更多相关Java枚举内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java基础之枚举Enum类案例详解

    一.文章序言 Java中引用类型:数组.类.接口.枚举.注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用类型,枚举就是一个规定了取值范围的变量类型. 枚举变量不能使用其他的数据,只能使用枚举中常量赋值.提高程序安全性: //格式: public enum 枚举名{ //枚举的取值范围 //枚举中可以生命方法 } 枚举的使用场景介绍? 1.最常见的情况如星期,相关变量我们会在Java里面重复使用,在这里我们就可以来定义一个叫做"星期"的枚举. publ

  • java 枚举enum的用法(与在switch中的用法)

    实际开发中,很多人可能很少用枚举类型.更多的可能使用常量的方式代替.但枚举比起常量来说,含义更清晰,更容易理解,结构上也更加紧密.看其他人的博文都很详细,长篇大论的,这里理论的东西不说了,一起看看在实际开发中比较常见的用法,简单明了. 看看枚举类 /** * 操作码类 * @author kokJuis * @version 1.0 * @date 2017-3-6 */ public enum Code { SUCCESS(10000, "操作成功"), FAIL(10001, &q

  • 一文搞懂JAVA 枚举(enum)

    Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等. Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割. 例如定义一个颜色的枚举类. enum Color { RED, GREEN, BLUE; } 以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色. 使用实例: enum Color { RED, GREEN, BLUE; } public c

  • java枚举类型-Enum

    目录 前言 应用 定义 基本Enum特性 Enum的静态导入 Enum中添加新方法 Switch语句中的Enum Enum的继承 EnumSet的使用 EnumMap的使用 常量相关方法 枚举值向枚举类型转换 前言 枚举是 Java1.5 引入的新特性,通过关键字 enum 来定义枚举类. 应用 定义 关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用. enum WeekEnum { Monday, Tuesday, Wednesday, T

  • 三分钟快速掌握Java中枚举(enum)

    什么是枚举? 枚举是JDK5引入的新特性.在某些情况下,一个类的对象是固定的,就可以定义为枚举.在实际使用中,枚举类型也可以作为一种规范,保障程序参数安全.枚举有以下特点: Java中枚举和类.接口的级别相同. 枚举和类一样,都有自己的属性.方法.构造方法,不同点是:枚举的构造方法只能是private修饰,也就无法从外部构造对象.构造方法只在构造枚举值时调用. 使用enum关键字声明一个枚举类型时,就默认继承自Java中的 java.lang.Enum类,并实现了java.lang.Seriab

  • 秒懂Java枚举类型(enum)

    理解枚举类型 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性.安全性以及便捷性.下面先来看看什么是枚举?如何定义枚举? 枚举的定义 上述的常量定义常量的方式称为int枚举模式,这样的定义方式并没有什么错,但它存在许多不足,如在类型安全和使用方便性上并没有多少好处,如果存在定义int值相同的变量,混淆的几率还是很大的,编译器也不会提出任何警告,因此这种方式在枚举

  • java 自定义可继承枚举Enum的案例

    一.定义enum抽象类 public class AbstractEnum { private static final Map<String, AbstractEnum> nameEnumMap = new ConcurrentHashMap<>(); @Getter protected String name; protected AbstractEnum () { } protected AbstractEnum(String name) { this.name = name

  • Java枚举类型enum的详解及使用

     Java枚举类型enum的详解及使用 最近跟同事讨论问题的时候,突然同事提到我们为什么Java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义.既然不明白就抽时间研究下吧. Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大

  • Java的枚举enum示例详解

    一. 什么是枚举 枚举是一种数据类型,具有集合的一些特点,可以存放多个元素,但存储对象有限且固定,枚举也有比较常见的使用场景,如我们需要表达性别(男.女),颜色(红.黄.蓝),星期(星期一.星期二...星期日),四季(春.夏.秋.冬),地理位置(东.西.南.北),方向(前.后.左.右)等,这些场景都非常适合枚举. 二. 定义枚举 java中使用enum来定义枚举,和class,interface具有同样的等级,(注意是enum,而不是Enum),定义枚举可以有两种情况 第一种:默认构造器(空构造

  • Java实例讲解枚举enum的实现

    目录 一.枚举介绍 1.自定义枚举实现 (1)示例 (2)测试结果 2.enum关键字实现枚举 (1)示例 (2)测试结果 3.enum关键字注意事项 (1)示例 一.枚举介绍 1.枚举是一组常量的集合 2.理解:美剧属于一种特殊的类,里面只包含一组有限的特定的对象 1.自定义枚举实现 1.不需要提供Set方法,枚举对象值通常为只读. 2.对枚举对象/属性使用final和static关键字修饰,实现底层优化 3.枚举对象名通常使用全部大写,常量的命名规范 4.枚举·对象根据需要,可以有一到多个属

  • Java实例讲解注解的应用

    目录 1.注解的理解 2.@Override 3.@Deprecated 4.@SuppressWarnings 1.注解的理解 1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释包. 类.方法.属性.构造器.局部变量等数据信息. 2)和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于 嵌入在代码中的补充信息. 3)在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略 警告等.在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任

  • Java实例讲解文件上传与跨域问题

    目录 了解MultipartFile接口 文件上传业务代码 Controller类 Service类 修改nginx配置 如何绕过网关 1.在网关中配置白名单 2.在nginx做转发 解决上传文件出现跨域问题 写配置类CorsFilter 在nginx配置中配置请求实体大小 Java文件上传实例并解决跨域问题 目在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传功能的实现. 了解MultipartFile接口 我们实现文件的上传用到了Spring-

  • Java实例讲解反射机制是怎么一回事

    Java反射机制的概述 1.Java的反射(reflection) :机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法.这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制.反射被视为动态语言的关键,反射让Java成为一个准动态语言 .缺点增加不安全性. 2.动态语言(弱类型语言) 是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型..

  • Java实例讲解多态数组的使用

    目录 多态概述 1.向上转型 2.向下转型 多态数组 Arrtest.java Person.java Student.java Teacher.java 多态数组+向下转型 instanceof关键字 Arrtest.java Person.java Student.java Teacher.java 多态概述 多态概念:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变

  • Java实例讲解动态代理

    JDK动态代理:利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. CGlib动态代理:利用ASM(开源的Java字节码编辑库,操作字节码)开源包,将代理对象类的class文件加载进来,通过修改其字节码生成子类来处理. 区别:JDK代理只能对实现接口的类生成代理:CGlib是针对类实现代理,对指定的类生成一个子类,并覆盖其中的方法,这种通过继承类的实现方式,不能代理final修饰的类. 强制使用CGlib <!-- proxy-target-clas

  • 四个实例超详细讲解Java 贪心和枚举的特点与使用

    目录 贪心: 枚举: 1.朴素枚举 2.状压枚举    算法题1: 示例 算法题2: 示例 算法题3:  示例1 示例2 算法题4:  示例1 笔试技巧:学会根据数据范围猜知识点          一般1s 时间限制的题目,时间复杂度能跑到 1e8 左右( python 和 java 会少一些,所以建议大家使用c/c++ 做笔试题). n 范围 20 以内: O(n*2^n) 状压搜索 /dfs 暴搜 n 范围 200 以内: O(n^3) 三维 dp n 范围 3000 以内: O(n^2)

  • 四个实例超详细讲解Java 贪心和枚举的特点与使用

    目录 贪心: 枚举: 1.朴素枚举 2.状压枚举 算法题1: 示例 算法题2: 示例 算法题3: 示例1 示例2 算法题4: 示例 笔试技巧:学会根据数据范围猜知识点 一般1s 时间限制的题目,时间复杂度能跑到 1e8 左右( python 和 java 会少一些,所以建议大家使用c/c++ 做笔试题). n 范围 20 以内: O(n*2^n) 状压搜索 /dfs 暴搜 n 范围 200 以内: O(n^3) 三维 dp n 范围 3000 以内: O(n^2) 二维 dp 背包 枚举 二维前

  • Java枚举(enum) 详解7种常见的用法

    JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便.  用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int

随机推荐