【JAVA】<枚举Enum>枚举类的使用&自定义枚举类

【JAVA】<枚举Enum>枚举类的使用&自定义枚举类,第1张

【JAVA】<枚举Enum>枚举类的使用&自定义枚举类

目录

一、枚举类概述:

1.枚举类概述:

2.枚举类的属性

二、自定义枚举类(JDK 5.0前):

三、enum关键字定义枚举类(JDK 5.0后):

Enum API:

enum类实现接口:


一、枚举类概述: 1.枚举类概述:

        枚举类:类的对象只有有限个,确定多个时,我们称这个类为枚举类。当需要定义一组常量时,强烈建议使用没枚举类。

        如果枚举类只有一个对象,则可以作为一种单例模式的实现方式。

【百面JAVA】<JavaSE面试题>编写Singleton示例-单例模式_范同学的知识分享园地!-CSDN博客目录面试题目????:编写结果????:1.饿汉式:方法一:直接实例化饿汉式方法二:枚举式方法三:静态代码块饿汉式2.懒汉式:方法一:线程不安全方法二:线程安全方法三:静态内部类形式题目解析✏️:1.什么是Singleton?要点:2.几种常见形式:饿汉式:懒汉式:面试题目????:编写一个Singleton示例!编写结果????:1.饿汉式:方法一:直接实例化饿汉式/** * 饿汉式: * 直接创建实例对象,不https://blog.csdn.net/weixin_52058417/article/details/122145183

2.枚举类的属性:
  • 枚举类对象属性不应允许修改,应该使用private final修饰
  • 枚举类使用private final修饰的属性应该在构造器中为其赋值
  • 枚举类显示定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数

二、自定义枚举类(JDK 5.0前):
  1. 私有化成员属性,使用private final关键字修饰
  2. 私有化构造器,如果含有成员属性,需要在构造器中对成员属性进行赋值 *** 作
  3. 在类的内部创建需要个数的实例,提供该实例
  4. 类内部提供其它需要的 *** 作
//自定义枚举类:
class TestClass{

    //1.成员属性私有化,使用private final修饰:
    private final String name;
    private final String desc;

    //2.私有化构造器,在内的内部创建好实例对象,不允许类外创建该枚举类实例:
    private TestClass(String name, String desc){ //对成员属性进行初始化赋值
        this.name = name;
        this.desc = desc;
    }

    //3.对外提供该枚举类的有限个实例对象:
    public TestClass t1 = new TestClass("t1", "desc01");
    public TestClass t2 = new TestClass("t2", "desc02");

    //4.定义其它 *** 作
}

三、enum关键字定义枚举类(JDK 5.0后):
  1. 直接提供该枚举类实例,如果实例含有成员属性,使用()括号定义属性,提供相应的构造方法。
  2. 定义成员属性,使用private final修饰
  3. 枚举类构造方法默认是private,在构造方法中对成员属性进行初始化赋值 *** 作
  4. 提供其它需要的 *** 作
enum TestEnum{
    //1.提供该枚举的实例化对象,多个对象之间使用,(逗号)隔开,末尾;(分号结束)
    t1("t1","desc1"),t2("t2","desc2");

    //2.成员属性使用private final修饰:
    private final String name;
    private final String desc;


    //3.私有化构造器,如果有成员属性,对成员属性进行赋值:
    private TestEnum(String name, String desc){ //构造方法没有返回值,方法名和类名一致
        this.name = name;
        this.desc = desc;
    }

    //4.其它 *** 作
}

使用enum关键字定义枚举类,默认继承于,java.lang.Enum类 

Enum API:

  •  values():返回枚举类型的对象数组。该方法可以很方便的遍历所有的枚举值
  • valueof(String objName):返回当前枚举类中,对象名是objName的对象
    • 如果objName对象不存在当前枚举类中,抛出异常java.lang.IllegalArgumentException
enum类实现接口:
  • 实现接口,在enum类中实现抽象方法
  • 让枚举类的对象分别实现接口中的抽象方法,此时,可以针对不同的实例定义不同的方法实现

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5685739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存