JAVA中语法:枚举、枚举作用

枚举的概述

1.枚举是Java中的一种特殊类型
2.枚举的作用:"是为了做信息的标志和信息的分类"。

定义枚举类的格式:

修饰符enum 枚举名称{
第一行都是罗列枚举类实例的名称。
)
enum Season{
SPRING , SUMMER ,AUTUMN , WINTER;
}

反编译为

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

枚举的特征:

1.枚举类都是继承了枚举类型:java.lang.Enum
2.枚举都是最终类,不可以被继承。
3.构造器的构造器都是私有的,枚举对外不能创建对象。
4.枚举类的第一行默认都是罗列枚举
5.对象的名称的。枚举类相当于是多例模式。

案例说明:

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

选择常量做信息标志和分类:

代码可读性好,实现了软编码形式。

枚举做信息标志和分类:

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

package com.itheima.d5_enum;

public enum Season {
    // 第一行罗列枚举的实例:对象的名称。
    SPRING,SUMMER,AUTUMN, WINTER;
}

package com.itheima.d4_constant;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test2 {


    public static void main(String[] args) {
        // 目标:理解常量的另外一个作用:做信息的标志和分类。
        // 模拟:控制玛丽的移动:上下左右。
        // 桌面编程
        // 1、创建窗口
        JFrame win = new JFrame("超级玛丽");
        win.setSize(300, 200);

        // 2、设计一个面板(桌布)
        JPanel jPanel = new JPanel();
        win.add(jPanel);

        // 2、放置几个按钮
        JButton b1 = new JButton("上");
        jPanel.add(b1);
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 控制玛丽往上跳
                move(Constant.UP);
            }
        });

        JButton b2 = new JButton("下");
        jPanel.add(b2);
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 控制玛丽往下蹲
                move(Constant.DOWN);
            }
        });

        JButton b3 = new JButton("左");
        jPanel.add(b3);
        b3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 控制玛丽往左走
                move(Constant.LEFT);
            }
        });

        JButton b4 = new JButton("右");
        jPanel.add(b4);
        b4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 控制玛丽往右走
                move(Constant.RIGHT);
            }
        });

        win.setLocationRelativeTo(null);
        win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        win.setVisible(true);
    }

    public static void move(int orientation){
        // 控制玛丽移动
        switch (orientation) {
            case Constant.UP:
                System.out.println("玛丽往↑飞了一下~~");
                break;
            case Constant.DOWN:
                System.out.println("玛丽往↓蹲了一下~~");
                break;
            case Constant.LEFT:
                System.out.println("玛丽往←跑了一下~~");
                break;
            case Constant.RIGHT:
                System.out.println("玛丽往→跑了一下~~");
                break;
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容