美文网首页
java基础类-4-enum

java基础类-4-enum

作者: 宠辱不惊的咸鱼 | 来源:发表于2019-10-01 09:14 被阅读0次

概述

  • 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;
}

相关文章

  • java基础类-4-enum

    概述 Java 1.5出现 枚举出现之前,一般用static final int实现类似功能但缺陷在于:非作者对语...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

  • Java常用包和第三方jar包

    一、Java常用包 java.lang--语言包:Java语言的基础类,包括Object类、Thread类、Str...

  • Android代码规范(自用)

    命名规范和排版 java成员类 基础类型优先排在上方 java相关类排在基础类型下方 android相关类排在ja...

  • 事件类

    事件类 1.java.lang.object类 java.util.EventObject 类是所有事件对象的基础...

  • ##Java学习笔记之基础类库笔记

    Java学习笔记之基础类库笔记 Object 所有类,数组,枚举类的父类 Objects(Java7新增) 工具类...

  • java基础学习:JavaWeb之Servlet

    其他更多java基础文章:java基础学习(目录) 什么是Servlet Servlet是一个特殊的Java类, ...

网友评论

      本文标题:java基础类-4-enum

      本文链接:https://www.haomeiwen.com/subject/tvlkpctx.html