• Java中的枚举类


    一、基本形式

    public enum 类名{A,B,C;}大括号里面为变量名,由于枚举类存放的变量用final修饰为常量,因此变量名大写。

    如:

    public enum TestNume{
    A,B,C;
    }

    枚举类的每个变量名都可看作:

    public static final 类名 变量名 = new 类名();因此用类名.变量名就可以得到一个类的对象。

    如:public static final TestNume A = new TestNume();

    而且内部私有化枚举类的构造器private 类名() {},如下:

    private TestNume(){};

    由于枚举类无法通过new来获取对象,因此定义的每个变量实例都是引用类型的唯一实例。

    class Test{
    public static void main(String[] args) {
    TestNume D = new TestNume();
    //内部已经私有构造器,因此会报错
    }
    }

    二、常用方法

    2.1name()

    顾名思义得到变量的名字,如果不重写toString方法,类名.变量名与类名.变量名.name()相等。

    public enum TestNume{
    A,B,C;

    }
    class Test{
    public static void main(String[] args) {
    String name = TestNume.A.name();
    System.out.println(name);//A
    }
    }

    2.2ordinal()

    返回变量在枚举类的顺序,从0开始

    public enum TestNume{
    A,B,C;

    }
    class Test{
    public static void main(String[] args) {
    int rank = TestNume.A.ordinal();
    System.out.println(rank);//0
    System.out.println(TestNume.B.ordinal());//1
    System.out.println(TestNume.C.ordinal());//2
    }
    }

    三、高级形式

    上面的基本形式为枚举的无参构造,下面讲解枚举的有参构造,我们可以定义private的构造方法,并且,给每个枚举常量添加字段,字段的修饰符pubic final不写也会默认,构造器的修饰符private不写,也会走默认,如下所示:

    public enum TestNume{
    A("a",12),B("b",15),C("c",16);
    public final String name;
    public final int age;
    private TestNume(String name, int age) {
    this.name = name;
    this.age = age;
    }
    }

    相当于:

    public static final TestNume A = new TestNume("a",12);

    枚举并没有给获取字段值的方法,我们需要自己写get方法

    public String getName() {
    return name;
    }

    public int getAge() {
         return age;
    }

    由于字段是常量,因此无法用set方法,更改字段的值

    int aAge = TestNume.A.getAge();
    TestNume.A.setAge(15);
    System.out.println(aAge);//12

    小结

    Java使用enum定义枚举类型,它被编译器编译为final class Xxx extends Enum { … };

    通过name()获取常量定义的字符串,注意不要使用toString();

    通过ordinal()返回常量定义的顺序(无实质意义);

    可以为enum编写构造方法、字段和方法

    enum的构造方法要声明为private,字段强烈建议声明为final;

    enum适合用在switch语句中。

    引用于廖雪峰https://www.liaoxuefeng.com/wiki/1252599548343744/1260473188087424

  • 相关阅读:
    Kali渗透测试工具-netcat
    信息收集工具-dimtry
    Beef xss神器
    Scapy编写ICMP扫描脚本
    全国职业技能大赛信息安全管理与评估-MySQL弱口令利用
    crawler 听课笔记 碎碎念 2 一些爬虫须知的基本常识和流程
    crawler 听课笔记 碎碎念 3 关于python的细枝末节的回顾复习
    关于互信息(Mutual Information),我有些话要说
    最让人头疼的清洗数据过程----选择合适的方式快速命中所需的数据
    利用小虫虫做一枚合格宅男,果然牡丹花下做鬼也风流
  • 原文地址:https://www.cnblogs.com/1995stone/p/13623309.html
Copyright © 2020-2023  润新知