【JavaSE】十二生肖带你走进枚举类(上)

简介: 文章目录1.枚举类引入2 自定义类实现枚举2.1 自定义类实现枚举的步骤与特点2.2 按照步骤实现自定义类3 enum关键字实现枚举3.1 enum枚举类实现步骤3.2 使用enum关键字解决需求3.3 使用enum枚举类的注意事项4 enum常用方法及基本使用4.1 toString() 与 name()4.2 oridinal()4.3 values() 与 valueOf()5 练习*

1.枚举类引入

先来看一个需求:


要求创建(Animal)对象,请设计并完成该 Animal 类的基本信息属性,以及构造器与get方法,并在测试中输出十二生肖的信息。



需求很简单,我们只需要按照要求创建类,在测试类中创建对象即可,参考代码如下:


public class Main {
    public static void main(String[] args) {
        // 创建十二生肖
        Animal rat = new Animal("子鼠");
        Animal ox = new Animal("丑牛");
        Animal tiger = new Animal("寅虎");
        Animal rabbit = new Animal("卯兔");
        Animal dragon = new Animal("辰龙");
        Animal snake = new Animal("巳蛇");
        Animal horse = new Animal("午马");
        Animal sheep = new Animal("未羊");
        Animal monkey = new Animal("申猴");
        Animal rooster = new Animal("酉鸡");
        Animal dog = new Animal("戌狗");
        Animal pig = new Animal("亥猪");
        // 打印信息
        System.out.println(rat.getName());
        System.out.println(ox.getName());
        System.out.println(tiger.getName());
        System.out.println(rabbit.getName());
        System.out.println(dragon.getName());
        System.out.println(snake.getName());
        System.out.println(horse.getName());
        System.out.println(sheep.getName());
        System.out.println(monkey.getName());
        System.out.println(rooster.getName());
        System.out.println(dog.getName());
        System.out.println(pig.getName());
    }
}
/**
 * Animal类
 */
class Animal{
    private String name;  // 十二生肖姓名
    // 构造器
    public Animal(String name) {
        this.name = name;
    }
    // getXxx
    public String getName() {
        return name;
    }
}


分析代码发现,虽然需求我们成功的解决了,但是,对于十二生肖而言,它的对象(具体值),是固定的12个,不会再多。而当前设计类的思路,并不能体现十二生肖是固定的12个对象, 我们需要将需求添加如下限制:


1.十二生肖的值是有限的12个(rat、ox、tiger… …);

2.对象只读,不需要修改。


为了解决该需求,我们引出枚举的概念: 枚举是一组常量的集合,可以理解成,枚举是一种特殊的类,里面只包含一组有限的特定对象。

而枚举,我们通常有两种实现方式:(1)自定义枚举类实现;(2)使用 enum 关键字实现枚举。下面我们来分别通过(1)(2)两种方式实现十二生肖的需求。


2 自定义类实现枚举

2.1 自定义类实现枚举的步骤与特点

1️⃣ 不需要提供 setXxx 方法,因为 枚举类的对象值通常为只读;

2️⃣ 对枚举对象/属性使用 final + static 修饰,实现底层优化;

3️⃣ 枚举类对象名通常大写,这是常量的命名规范;

4️⃣ 将自定义类的构造器私有化,防止外部 new 新对象;

5️⃣ 在自定义类中创建一组对象,并对外暴露对象,即使用 final + static 修饰,让外部可以通过 类名.对象名 的方式直接访问到枚举对象。


2.2 按照步骤实现自定义类

🍑 自定义类参考代码:



🍌 测试代码如下:



🍎 测试结果:


Animal{name=‘子鼠’}

Animal{name=‘丑牛’}

Animal{name=‘寅虎’}

Animal{name=‘卯兔’}

Animal{name=‘辰龙’}

Animal{name=‘巳蛇’}

Animal{name=‘午马’}

Animal{name=‘未羊’}

Animal{name=‘申猴’}

Animal{name=‘酉鸡’}

Animal{name=‘戌狗’}

Animal{name=‘亥猪’}


3 enum关键字实现枚举

3.1 enum枚举类实现步骤

1️⃣ 使用 enum 关键字替代 class;

2️⃣ 相较于自定义枚举类,我们不需要再使用 public static final 修饰对象,只需要使用 对象常量名(实参列表) 的方式就行,如果是使用默认无参构造器,则可以省略小括号及实参列表;


在上面的例子中,public static final Animal RAT = new Animal("子鼠") 可以直接使用 Rat("子鼠") 来代替


3️⃣ 如果有多个常量(对象),则以,分隔, 最后一个常量后加分号;

4️⃣ 需要特别注意的是,使用 enum 实现枚举类,要将定义的常量对象,写在类的前面。


3.2 使用enum关键字解决需求

在这里,其实只需要将自定义类稍加修改就行(博主在偷懒,不要效仿嗷,手动狗头.jpg)。高情商:我们使用 enum 来优化代码~

Tips:在 idea 中 alt + shift + a 可以实现多光标同时修改,按 esc 退出。


Idea多光标编辑演示

🍑 枚举类参考代码:

测试类代码不需要作出改动,控制台测试结果如下:


Animal{name=‘子鼠’}

Animal{name=‘丑牛’}

Animal{name=‘寅虎’}

Animal{name=‘卯兔’}

Animal{name=‘辰龙’}

Animal{name=‘巳蛇’}

Animal{name=‘午马’}

Animal{name=‘未羊’}

Animal{name=‘申猴’}

Animal{name=‘酉鸡’}

Animal{name=‘戌狗’}

Animal{name=‘亥猪’}


3.3 使用enum枚举类的注意事项

1️⃣ 当使用 enum 关键字创建一个枚举类时,会 默认继承 Enum类;


相关文章
|
5月前
|
Java 编译器
31. 【Java教程】枚举类
31. 【Java教程】枚举类
38 1
|
6月前
|
Java 索引
Java开发指南 | 第三十篇】Java 枚举(enum)
Java开发指南 | 第三十篇】Java 枚举(enum)
38 1
|
6月前
|
Java Spring
【JAVA学习之路 | 提高篇】(枚举类)及其实现
【JAVA学习之路 | 提高篇】(枚举类)及其实现
【JavaSE】Java基础语法(十):构造方法
在面向对象编程的思想中,构造方法(Constructor)是一个特殊的函数,用于创建和初始化类的对象。构造方法通常与类名同名,在对象创建时自动调用,用于为对象属性赋初值,并进行其他必要的操作。 构造方法在不同编程语言中可能会有所不同,但常见的语言都支持构造方法的定义。
|
安全 算法 Java
【JavaSE专栏19】谈谈泛型和枚举的那些事
【JavaSE专栏19】谈谈泛型和枚举的那些事
198 0
【JavaSE】Java基础语法(二十一):内部类
1. 内部类的基本使用 内部类概念 在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类 内部类定义格式
|
IDE Java 编译器
【JavaSE成神之路】一文搞定static关键字
哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java的static关键字。
111 0
Java小白翻身教程-如何引用外部类
Java小白翻身教程-如何引用外部类
|
Java 索引
【JavaSE】十二生肖带你走进枚举类(下)
文章目录 1.枚举类引入 2 自定义类实现枚举 2.1 自定义类实现枚举的步骤与特点 2.2 按照步骤实现自定义类 3 enum关键字实现枚举 3.1 enum枚举类实现步骤 3.2 使用enum关键字解决需求 3.3 使用enum枚举类的注意事项 4 enum常用方法及基本使用 4.1 toString() 与 name() 4.2 oridinal() 4.3 values() 与 valueOf() 5 练习*
【JavaSE】十二生肖带你走进枚举类(下)
|
安全 Java 程序员
【JavaSE】泛型通关教程
文章目录 1 泛型引入 2 泛型讲解 2.1 泛型的介绍 2.2 泛型实例 2.3 泛型使用细节 3 自定义泛型类 4 自定义泛型接口 5 自定义泛型方法 6 泛型的继承与通配 写在最后
【JavaSE】泛型通关教程