Java基础-枚举

目录

    • 1. 什么枚举
    • 2. 格式
    • 3. 注意事项
    • 4. 认识
    • 5.抽象枚举
    • 6. 枚举实现单例
    • 7. 枚举的应用场景


1. 什么枚举

枚举是一种特殊的类。
枚举的构造器私有。

2. 格式

修饰符 enum 枚举类名{
	名称1, 名称2, ...;
	其他成员...
}

3. 注意事项

  • 枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开。
  • 这些名称,本质上是常量,每个常量都会记住枚举类的一个对象。

4. 认识

public enum A {
    // 注意:枚举类的第一行必须罗列的是枚举对象的名字。
    X,Y,Z;
    private String name;

    public String getName() {
        return name;
    }

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

public class Test {
    public static void main(String[] args) {
        A x = A.X;
        System.out.println(x);
        A[] values = A.values();  // 获取所有的枚举对象
        System.out.println("====== 所有枚举对象 ======");
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i]);
        }
        System.out.println("============");

        A x1 = A.valueOf("Z");  // 获取枚举对象
        System.out.println("====== 枚举名称 ======");
        System.out.println(x1.name());
        System.out.println("====== 枚举索引 ======");
        System.out.println(x1.ordinal());
    }
}

5.抽象枚举

package com.ming.enum_;

/**
 * 抽象枚举
 */
public enum B {
    X(){
        @Override
        public void go() {

        }
    },
    Y("张三"){
        @Override
        public void go() {
            System.out.println(getName() + "在跑~");
        }
    };

    private String name;

    B() {
    }

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

    public abstract void go();

    public String getName() {
        return name;
    }

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

public class Test {
    public static void main(String[] args) {
        B y = B.Y;
        y.go();
    }
}

6. 枚举实现单例

public enum A {
    X;
}

7. 枚举的应用场景

  • 用来表示一组信息,然后作为参数进行传输。
  • 参数值不受约束。
  • 选择定义枚举表示一组信息,并作为参数传输
    * 代码可读性好,参数值得到了约束,对使用者更加友好,建议使用!
/**
 * 常量
 */
public class Constants {
    public static final int BOY = 0;
    public static final int GIRL = 1;
}
/**
 * 枚举
 */
public enum Constant2 {
    BOY, GIRL;
}
public class Test2 {
    public static void main(String[] args) {
        // 目标:掌握枚举的应用场景,做信息标志和分类
        // check1(Constants.BOY);
        check2(Constant2.GIRL);
    }
    public static void check1(int sex) {
        switch (sex){
            case 0:
                System.out.println("展示一些美女图,游戏信息~");
                break;
            case 1:
                System.out.println("展示一些帅哥,土豪信息!");
                break;
            default:
                System.out.println("你个虎得,参数都能穿错!");
        }
    }
    public static void check2(Constant2 sex) {
        switch (sex){
            case BOY:
                System.out.println("展示一些美女图,游戏信息~");
                break;
            case GIRL:
                System.out.println("展示一些帅哥,土豪信息!");
                break;
            default:
                System.out.println("你个虎得,参数都能穿错!");
        }
    }
}

你可能感兴趣的:(Java,java,开发语言)