Java中的枚举

一:认识枚举

1.枚举是一种特殊类。

2.枚举的格式:

public enum A {
    X, Y;
    private String name;
    A() {
    }

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

    public String getName() {
        return name;
    }

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

使用:

运行结果会得到X。

注意:枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开。

这些名称,本质是常量,每个常量都会记住枚举类的一个对象。

因为在此罗列对象时会调用枚举类中的构造器(默认是有一个无参构造器)若没有无参构造器则必须要调用有参构造器。

3.枚举类的特点:

枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象。

枚举类的构造器都是私有的(写不写都只能是私有的),因此,枚举类对外不能创建对象。

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

枚举类中,从第二行开始,可以定义类的其他各种成员。

编译器为枚举类新增了几个方法,并且枚举类都是继承:java.lang.Enum类的,从enum类也会继承到一些方法。

方法一:枚举类名[] 变量名 = 枚举类名.values(); 拿到全部对象。

方法二:枚举类名 变量名 = 枚举类名.valueof();根据枚举的常量名得到枚举对象。

方法三:System.out.println(变量名.ordinal());拿取变量相对应常量的索引。

二:扩展:抽象枚举

1.抽象枚举不能够直接罗列对象,因为它不能创建对象,因此想要罗列对象,需要在它内部将下方的抽象方法进行重写。

public enum B {
    X("王凯"){
        @Override
        public void go(){
            System.out.println(getName()+"跑的快");
        }
    },Y(){
        @Override
        public void go(){
        }
    };
    String name;
    public abstract void go();

    B() {
    }

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

    public String getName() {
        return name;
    }

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

使用:

运行结果为:王凯跑的快

可以使用枚举来实现单例设计模式。

三:枚举的应用场景:用来表示一组信息,然后作为参数传递。

1.选择定义一个一个的常量来表示一组信息,并作为参数传递。

参数值不受约束。

public class C {
    public static final int BOY = 0;
    public static final int GIRL = 1;
}
public class study {
    public static void main(String[] args) {
        check(C.BOY);
    }
    public static void check(int sex){
        switch (sex){
            case C.BOY:
                System.out.println("喜欢打游戏");
                break;
            case C.GIRL:
                System.out.println("喜欢看电视");
                break;
        }
    }
}

2.选择定义枚举表示一组信息,并作为参数传递。

代码可读性好,参数值受到了约束,对使用者更友好,建议使用!


public enum C {
    BOY,GIRL;
}

public class study {
    public static void main(String[] args) {
        check(C.BOY);
    }
    public static void check(C c){
        switch (c){
            case BOY:
                System.out.println("喜欢打游戏");
                break;
            case GIRL:
                System.out.println("喜欢看电视");
                break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值