枚举

探讨了如何使用枚举简化固定对象类的定义,以颜色类为例,展示了枚举的使用方法及优势,如避免实例化和修改固定对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

如果要定义一个color类保存三原色的对象(红red,绿green,蓝blue),应该怎样定义?会有什么问题?
先自己思考该怎么定义?思考完成看和我写的有什么不同

public class Color {
    private int id;
    private String name;

    public static final Color c1=new Color(101,"红色");
    public static final Color c2=new Color(102,"绿色");
    public static final Color c3=new Color(103,"蓝色");

    private Color(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }
    
}

既然是对象应该有唯一标识id,还有其对应的名称。
颜色类是固定使用的且三原色不可能改变,id和name不能随意的改变。
为了方便使用且三原色是大家认为的统一概念,应该是创建对象的时候就有三原色

如果有很多个这样的类,编写这个类会非常的麻烦,那么有没有一个类似于类的容器来方便我们编写
我们通过类定义一个新类型,当我们希望类的对象固定下来,我们需要做繁琐的操作
在java1.5之后,推出枚举,枚举可以简单的实现这一功能

使用

1.将class变为enum
2.在pojo对象中是变量的写法,直接写对应的固定的名字全大写+类的构造方法,创建多个使用","隔开,“;”结束

代码测试

在刚刚编写的Color使用枚举

public enum Color {

    RED(101,"红色"),GREEN(102,"绿色"),BLUE(102,"蓝色");

    private int id;
    private String name;

    private Color(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

}

测试

System.out.println(Color.RED.getId()+Color.RED.getName());

结果

101红色

Process finished with exit code 0

我们能否实例化枚举?
测试
在这里插入图片描述
创建之后出现报错信息,无法实例化
那我们能否改变已有的三个对象的值?
显然是不能的,id和name都是由private修饰的,而且没有set方法


本文若有错误请指正,互相学习,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值