枚举详细说明

枚举的概述

什么是枚举

枚举是Java中的一种特殊类型

枚举的作用

"是为了做信息的标志和信息的分类"。

定义枚举类的格式

修饰符 enum 枚举名称{

    第一行都是罗列枚举类实例的名称。

}

示例:

public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}

 反编译后:

Compiled from "Season.java"
public final class com.itheima.d5_enum.Season extends java.lang.Enum<com.itheima.d5_enum.Season> {
  public static final com.itheima.d5_enum.Season SPRING;
  public static final com.itheima.d5_enum.Season SUMMER;
  public static final com.itheima.d5_enum.Season AUTUMN;
  public static final com.itheima.d5_enum.Season WINTER;
  private static final com.itheima.d5_enum.Season[] $VALUES;
  public static com.itheima.d5_enum.Season[] values();
  public static com.itheima.d5_enum.Season valueOf(java.lang.String);
  private com.itheima.d5_enum.Season();
  private static com.itheima.d5_enum.Season[] $values();
  static {};
}

枚举的特征:

枚举类都是继承了枚举类型:java.lang.Enum。

枚举都是最终类,不可以被继承。

构造器都是私有的,枚举对外不能创建对象。

枚举类的第一行默认都是罗列枚举对象的名称的。

枚举类相当于是多例模式。 

枚举的使用场景演示

案例说明:

现在开发的超级玛丽游戏需要接收用户输入的四个方向的信号(上下左右),以便控制玛丽移动的方向。

选择常量做信息标志和分类: 虽然可以实现可读性,但是入参值不受约束,代码相对不够严谨,但常量可以存数据。

枚举做信息标志和分类: 代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!建议使用!

代码

/**
   做信息标志和分类
 */
public enum Orientation {
    UP, DOWN, LEFT, RIGHT;
}
public class EnumDemo2 {
    public static void main(String[] args) {
        // 1、创建一个窗口对象(桌子)
        JFrame win = new JFrame();
        // 2、创建一个面板对象(桌布)
        JPanel panel = new JPanel();
        // 3、把桌布垫在桌子上
        win.add(panel);
        // 4、创建四个按钮对象
        JButton btn1 = new JButton("上");
        JButton btn2 = new JButton("下");
        JButton btn3 = new JButton("左");
        JButton btn4 = new JButton("右");
        // 5、把按钮对象添加到桌布上去
        panel.add(btn1);
        panel.add(btn2);
        panel.add(btn3);
        panel.add(btn4);
        // 6、显示窗口
        win.setLocationRelativeTo(null);
        win.setSize(300,400);
        win.setVisible(true);


        btn1.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                move(Orientation.UP) ; // 让玛丽往上跳
            }
        });
        btn2.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                move(Orientation.DOWN) ; // 让玛丽往下跳
            }
        });
        btn3.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                move(Orientation.LEFT) ; // 让玛丽往左跑
            }
        });
        btn4.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                move(Orientation.RIGHT) ; // 让玛丽往右跑
            }
        });
    }

    public static void move(Orientation o){
        // 控制玛丽移动
        switch (o) {
            case UP:
                System.out.println("玛丽往上飞了一下~~");
                break;
            case DOWN:
                System.out.println("玛丽往下蹲一下~~");
                break;
            case LEFT:
                System.out.println("玛丽往左跑~~");
                break;
            case RIGHT:
                System.out.println("玛丽往→跑~~");
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值