JAVASE基础模块四十四( 枚举 自己实现枚举类 enum关键字实现枚举)

JAVASE基础知识模块四十四( 枚举 自己实现枚举类 enum关键字实现枚举)

枚举

  • JDK1.5的新特性: 自动拆装箱 泛型 增强for 可变参数 枚举
  • 概述:就是一个类只能存在几个固定的对象 那么这个就是枚举 我们就可以使用这些对象表示一些固定的值

案例

枚举类的自己实现
  1. 枚举方向属性并赋值
package MeiJu.X1;

public class Mei {
    public static void main(String[] args) {
        FangXiang front=FangXiang.FRONT;
        FangXiang behind=FangXiang.BEHIND;
        FangXiang left=FangXiang.LEFT;
        FangXiang right=FangXiang.RIGHT;
        System.out.println(front.name);
        System.out.println(behind.name);
        System.out.println(left.name);
        System.out.println(right.name);
    }
}
class FangXiang {
    public static final FangXiang FRONT=new FangXiang("前");
    public static final FangXiang BEHIND=new FangXiang("后");
    public static final FangXiang LEFT=new FangXiang("左");
    public static final FangXiang RIGHT=new FangXiang("右");
    String name;
    private FangXiang(String name) {
        this.name = name;
    }
}
运行结果:
前
后
左
右
  1. 抽象枚举方向属性并赋值
package MeiJu.X1;

public class Mei {
    public static void main(String[] args) {
        FangXiang front=FangXiang.FRONT;
        FangXiang behind=FangXiang.BEHIND;
        FangXiang left=FangXiang.LEFT;
        FangXiang right=FangXiang.RIGHT;
        System.out.println(front.name);
        System.out.println(behind.name);
        System.out.println(left.name);
        System.out.println(right.name);
    }
}
class FangXiang {
    public static final FangXiang FRONT=new FangXiang("前");
    public static final FangXiang BEHIND=new FangXiang("后");
    public static final FangXiang LEFT=new FangXiang("左");
    public static final FangXiang RIGHT=new FangXiang("右");
    String name;
    private FangXiang(String name) {
        this.name = name;
    }
}
运行结果:
前
后
左
右
enum关键字
  • 定义枚举类要用关键字enum
  • 特点与注意事项
    1. 所有枚举类都是Enum的子类,但是不要显式的写出来
    2. 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
    3. 枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”)
    4. 枚举类也可以有抽象方法,但是枚举项必须重写该方法
    5. 枚举在switch语句中的使用
  • 方法
int ordinal()  返回枚举项的序号
int compareTo(E o) 比较两个枚举项的 返回的是两个枚举项序号的 差值
String name() 获取枚举项的名称
String toString()获取枚举项的名称
<T> T valueOf(Class<T> type,String name) 用来获取指定的枚举项  参数1:枚举类对应的字节码对象 参数2 枚举项的名称
values()  获取所有的枚举
  • 案例一 普通枚举
package MeiJu.X1;

public class MeiJu {
    public static void main(String[] args) {
        Meij front = Meij.FRONT;
        Meij behind = Meij.BEHIND;
        Meij left = Meij.LEFT;
        Meij right = Meij.RIGHT;
        System.out.println(front);
        System.out.println(behind);
        System.out.println(left);
        System.out.println(right);
    }
}
enum Meij {
    FRONT, BEHIND, LEFT, RIGHT;
}
运行结果:
FRONT
BEHIND
LEFT
RIGHT
  • 案例二 枚举赋值
package MeiJu.X1;

public class MeiJu1 {
    public static void main(String[] args) {
        Meij1 front = Meij1.FRONT;
        Meij1 behind = Meij1.BEHIND;
        Meij1 left = Meij1.LEFT;
        Meij1 right = Meij1.RIGHT;
        System.out.println(front.name);
        System.out.println(behind.name);
        System.out.println(left.name);
        System.out.println(right.name);
    }
}
enum Meij1 {
    FRONT("前"),BEHIND("后"),LEFT("左"),RIGHT("右");
    String name;
    private Meij1(String name){
        this.name = name;
    }

}
运行结果:
前
后
左
右
  • 案例三 抽象枚举
package MeiJu.X1;

enum Meij2 {

    FRONT("前") {
        @Override
        public void show(String name) {

        }
    },
    BEHIND("后") {
        @Override
        public void show(String name) {

        }
    },
    LEFT("左") {
        @Override
        public void show(String name) {

        }
    }, RIGHT("右") {
        @Override
        public void show(String name) {

        }
    };
    String name;

    private Meij2(String name) {
        this.name = name;
    }

    public abstract void show(String name);
}

public class MeiJu2 {
    public static void main(String[] args) {
        Meij2 front = Meij2.FRONT;
        Meij2 behind = Meij2.BEHIND;
        Meij2 left = Meij2.LEFT;
        Meij2 right = Meij2.RIGHT;
        System.out.println(front.name);
        System.out.println(behind.name);
        System.out.println(left.name);
        System.out.println(right.name);
    }

}
运行结果:
前
后
左
右

待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值