Java基础-enum

概述

  • Java 1.5出现
  • 枚举出现之前,一般用static final int实现类似功能
    • 但缺陷在于:非作者对语义不明确,以及在类似于switch中无法检测异常值
  • 有一个自带静态方法values(),按照声明顺序返回枚举值
  • 枚举和普通的类一样,可以添加静态或非静态的属性和方法;但是,枚举值要放在最前面
  • 例子

public enum SexEnum {
    WOMAN, MAN;
}

// 带参构造方法枚举
public enum Mode implements IMode {
    PULLDOWN("上拉"), PULLUP("下拉");
    
    private final String value;
    private Mode(String value) {
        this.value = value;
    }
    public String getValue() {
        return value;
    }
}

本质分析

public enum Color {
    RED, BLUE, BLACK, YELLOW, GREEN;
}

// Color.class:
public final class enum_eddy.Color extends java.lang.Enum<enum_eddy.Color> {
    // 所有枚举值都是静态常量  
    public static final enum_eddy.Color RED;  
    public static final enum_eddy.Color BLUE;  
    public static final enum_eddy.Color BLACK;  
    public static final enum_eddy.Color YELLOW;  
    public static final enum_eddy.Color GREEN;

    // xxx
}
  • 本质是final类,所以不能被继承
  • 只可以实现接口,其他啥也不行
  • 有构造器,属性和方法
    • 枚举的构造方法只在构造枚举值时被调
    • 构造方法是私有的
    • 所有枚举类都继承Enum

方法

  • 枚举类的方法:其实就是Enum中定义的方法
  • ordinal():根据枚举值声明顺序返回整形值
    • Color.RED.ordinal(); // 0
    • Color.BLUE.ordinal(); // 1
  • compareTo():返回枚举值序号差
    • Color.RED.compareTo(Color.BLUE); // -1
  • values():返回全部枚举值的数组;这个方法未在Enum中定义,实际上是编译器添加的

Color[] colors = Color.values();
for(Color c : colors){
    System.out.print(c + ","); // RED,BLUE,BLACK,YELLOW,GREEN,
}

Enum类

protected Enum(String name, int ordinal) {
    this.name = name;
    this.ordinal = ordinal;
}

public String toString() {
    return name;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eddy咸鱼

感谢大佬加鸡蛋~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值