【JAVA枚举类型】

本文介绍了Java中的枚举类型,枚举是一种特殊的类,包含一组有限的特定对象。文章详细讲解了枚举类型的介绍、使用案例、实现方式以及enum的常用方法,如toString、name、ordinal、values和valueOf等。
摘要由CSDN通过智能技术生成

一、枚举类型介绍

在Java中,被 enum 关键字修饰的类型就是枚举类型,enum 的全称为 enumeration,它是 JDK 1.5 中引入的新特性。所有的枚举类型都是继承自Enum 类型。枚举是一组常量的集合,枚举属于一种特殊的类,里面只包含一组有限的特定的对象。

二、枚举类型使用案例

对于一周7天,一年4季,一天24小时都是有固定的一个对象,下面对案例进行代码实现:

public class EnumExercise {
    public static void main(String[] args) {

    Weeks MONDAY = new Weeks("周一");
    Weeks TUESDAY = new Weeks("周二");
    Weeks WEDNESDAY = new Weeks("周三");
    Weeks THURSDAY = new Weeks("周四");
    Weeks FRIDAY = new Weeks("周五");
    Weeks SATURDAY = new Weeks("周六");
    Weeks SUNDAY = new Weeks("周日");



   }


    }
}




class Weeks{
    //类
    private String name;
 private String desc;//描述

 public Weeks(String name) {
 this.name = name;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }


}

单例类是一个类只有一个实例,那么多例类就是一个类有多个实例,但不是无限个数的实例,以上编写方式虽然创建了多个实例,但是并没有限制实例个数,从而不能体现一周是固定的七个对象,进而有枚举类型产生

三、枚举类型实现方式

1)自定义类实现枚举

  • 将构造器私有化
  • 在该类内部直接创建固定的对象
  • 再加一个final修饰符
  • 去掉set方法,防止属性被修改

代码实现:


public class EnumExercise {
    public static void main(String[] args) {

//在此处调用Weeks的静态属性,只能访问到固定的属性,无法进行修改与添加
        System.out.println(Weeks.MONDAY);
        System.out.println(Weeks.TUESDAY);



    }


    }
}


class Weeks{
    //类
    private String name;
   public static final Weeks MONDAY = new Weeks("周一");
   public static final Weeks TUESDAY = new Weeks("周二");
   public static final Weeks WEDNESDAY = new Weeks("周三");
   public static final  Weeks THURSDAY = new Weeks("周四");
   public static final Weeks FRIDAY = new Weeks("周五");
   public static final Weeks SATURDAY = new Weeks("周六");
   public static final Weeks SUNDAY = new Weeks("周日");

 public Weeks(String name) {
 this.name = name;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }


}

2) 使用 enum 关键字实现枚举

  • 使用关键字enum
  • SPRING("春天", "温暖")   常量名(实参列表)
  • 有多个常量(对象), 使用 ,号间隔即可
  • 使用 enum 来实现枚举,要求将定义常量对象,写在前面
  • 使用无参构造器时,创建常量对象,则可以省略 ()

代码实现:

public class EnumExercise {
    public static void main(String[] args) {

        System.out.println(Week.MONDAY);
        System.out.println(Week.TUESDAY);
        

    }
}


enum Week{
    MONDAY("周一"),TUESDAY("周二"),WEDNESDAY("周三"),
    THURSDAY("周四"),FRIDAY("周五"),SATURDAY("周六"),SUNDAY("周日");
    private String name;

    Week(){

    }
    Week(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name
                ;
    }
}
  1. 当使用 enum 关键字开发一个枚举类时,默认会继承 Enum 类, 而且是一个 final 类
  2. 要清楚知道枚举对象调用的是哪个构造器.
  3. 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略 
  4. 当有多个枚举对象时,使用,间隔,最后有一个分号结尾
  5. 枚举对象必须放在枚举类的行首

四、enum 常用方法

1) toString:Enum 类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息

未重写前输出对象名,也就是SATURDAY:

 重写后输出属性的信息也就是周六:

 

2) name:返回当前对象名(常量名),子类中不能重写

 

3) ordinal:返回当前对象的位置号,默认从 0 开始

4) values:返回当前枚举类中所有的常量

 

5) valueOf:将字符串转换成枚举对象,要求字符串必须 为已有的常量名,否则报异常

根据你输入的 字符串 到 Week 的枚举对象去查找 , 如果找到了,就返回,如果没有找到,就报错

6) compareTo:比较两个枚举常量,比较的就是编号!

 

 实质就是:Week.MONDAY的编号[1] - Week.SUNDAY的编号[7],所以输出-6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值