文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java枚举案例分析

2023-06-30 16:12

关注

本文小编为大家详细介绍“Java枚举案例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java枚举案例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Java枚举案例分析

枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序赋给的非法值,使用普通变量的方式在开发阶段无法实现这一目标。
在JDK1.5之后,使用关键字enum定义一种新的类型,称为枚举类型
枚举(enum)和类(class)、接口(interface)是同一级别

案例引入

定义一个color,只能定义红、绿、蓝三种颜色

普通方法
Java枚举案例分析
那么如何解决这种问题,让color只能在三种颜色中选一种???

Enum类和enum关键字

使用enum关键字定义的枚举类,实际上就相当于定义了一个类,此类继承课Enum类而已。

public enum Color {    RED,    GREEN,    BLUE;}

Java枚举案例分析

枚举常用的方法

protected Enum(String name,int ordinal)此构造方法不能被外部直接调用,只能被其子类访问,此构造方法为自动调用
public final String name()返回枚举的名字
public String toString()返回枚举的名字
public final int ordinal()返回枚举的序号,默认从0开始
public final boolean equals(Object other)判断两个枚举是否相同

代码

public class EnumTest {    public static void main(String[] args) {        //定义一个color变量,只能设置为RED、GREEN、BLUE        Color color = Color.BLUE;        System.out.println(color);        System.out.println(color.name());        System.out.println(color.toString());//三种方式都是打印名字        System.out.println(color.ordinal());//返回枚举的序号RED--0、GREEN--1、BLUE--2        Color[] values = Color.values();//返回所有枚举类型        System.out.println(Arrays.toString(values));    }}

Java枚举案例分析

枚举的基本操作

带构造方法的枚举

枚举的本质是一个继承Enum类的子类,JVM编译器把枚举编译后生成一个final class

枚举不允许从外部调用,所以只能是private修饰
Java枚举案例分析
构造方法只能在对象中调用
Java枚举案例分析

public enum Color {    RED(10),    GREEN(20),    BLUE;    private int Number;//属性    private Color() {//默认构造方法        System.out.println("无参构造器被调用了!!!");    }    private Color(int Number) {        this.Number = Number;        System.out.println("有参构造器被调用了!!!");    }        public int getNumber(){        return Number;}}

主方法

public class EnumTest {    public static void main(String[] args) {        Color color = Color.RED;        System.out.println(color.name());        System.out.println(color.getNumber());//获取Number的值    }}

Java枚举案例分析

枚举实现接口

在枚举类型中,可以继承接口,实现接口有两种方法,要么在枚举类中实现该方法,或者在对象内部实现该方法

方式1:在枚举对象内部实现接口中的方法

interface info{    public String getColor();}public enum Color implements info{    RED{        @Override        public String getColor() {return "红色";}    },    GREEN{        @Override        public String getColor() {return "绿色";}    },    BLUE{        @Override        public String getColor() {return "蓝色";}    };}

方式2:在枚举类中实现接口中的方法

interface info{    public String getColor();}public enum Color implements info{    RED,GREEN,BLUE;        @Override    public String getColor() {        return null;    }}

主方法

public class EnumTest {    public static void main(String[] args) {        Color color = Color.RED;        System.out.println(color.getColor());    }}

Java枚举案例分析

枚举实现抽象方法

在枚举类型中,可以定义抽象方法,具体由对象实现

枚举类

public enum Color {    RED{        @Override        public String getColor() {return "红色";}    },    GREEN{        @Override        public String getColor() {return "绿色";}    },    BLUE{        @Override        public String getColor() {return "蓝色";}    };    //在枚举中定义一个抽象方法,通过枚举对象实现    public abstract String getColor();}

主方法

public class EnumTest {    public static void main(String[] args) {        Color color = Color.BLUE;        System.out.println(color.getColor());    }}

Java枚举案例分析

枚举实现单例模式

枚举是用来保证数据在指定范围内的值,如果枚举中只有一个类型(一个值)的话,枚举中就只有一个对象,那么就可以实现单例模式。

枚举类

public enum Singletion {    SINGLETION;    public void Method(){        System.out.println("使用枚举实现单例模式!!!");    }}

主方法

public class EnumTest {    public static void main(String[] args) {        Singletion singletion=Singletion.SINGLETION;        singletion.Method();    }}

Java枚举案例分析

集合类对枚举的支持

在JDK1.5之后,对于Set和Map接口而言又增加了两个新的子类:EnumSetEnumMap两个子类

EnumSet

一个专门Set实现与枚举类型一起使用。 枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型
EnumSet是一个抽象类,不能直接创建实例对象,但是可以通过方法来使用。Java枚举案例分析

EnumSet.allOf(Class<E> elementType)把一个枚举类型全部填充到集合中去
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)创建与指定枚举集具有相同元素类型的枚举集,最初包含此类型的所有元素,该元素 不包含在指定的集合中。
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)创建与指定的枚举集相同的元素类型的枚举集,最初包含相同的元素(如果有)

代码

import java.util.EnumSet;public class EnumTest {    public static void main(String[] args) {        EnumSet<Color> set = EnumSet.allOf(Color.class);//把一个枚举类型全部填充到集合中去        for (Color c : set) {            System.out.println(c.name());        }    }}

Java枚举案例分析

EnumMap

EnumMap一个专门Map实现与枚举类型键一起使用。 枚举映射中的所有密钥必须来自创建映射时明确或隐式指定的单个枚举类型。 枚举地图在内部表示为数组。 这种表示非常紧凑和高效。

代码

import java.util.EnumMap;public class EnumTest {    public static void main(String[] args) {        EnumMap<Color, String> map = new EnumMap<>(Color.class);        map.put(Color.RED, "红色");        map.put(Color.GREEN, "绿色");        map.put(Color.BLUE, "蓝色");        System.out.println(map.get(Color.RED));    }

Java枚举案例分析

读到这里,这篇“Java枚举案例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯