enum类使用方法

enum 类是java1.5之后新添加的功能类,主要用在表示日期、性别、颜色等。可以统一定义常用的常量。

enum类可以看作一个普通的java类,用实例化的enum类来表示常量(如日期、性别)。因为构造方法为private,所以java开发者不能通过外部创建enum的实例。只能通过enum类自己内部实例化。所以表示常量的enum实例都为单例模式。

public enum SexC {
    MALE,FAMALE;
    SexC(){
       System.out.println("初始化SexC实例");
    }
}
public class TestEnum {
    @Test
    public void test(){
        SexC sex1 =SexC.FAMALE;
        SexC sex2 =SexC.FAMALE;
        System.out.println(sex1 == sex2);
    }
}
初始化SexC实例
初始化SexC实例
true

通过例子可以看出在加载SexC 类的时候 实例化来两个对象,应该分别是MALE  FAMAL 。引用sex1和sex2同时指向单例FAMAL "=="的结果为true。

下面例子丰富了下enum类,实例化enum对象可以通过()调用构造方法 通过{} 实现抽象类中的抽象方法。类似匿名函数的写法,但匿名函数只使用一次,enum实例可以随意调用,单例模式。

package enums;

/**
 * Created by fengxinzi on 17-11-21.
 */
public enum Lamp {
    /**
     * 实例化RED对象的时候使用带参构造初始化对象内部的time属性。因为Lamp中存在抽象方法,
     * 所以实例化RED对象中需要实现该getNextLamp()方法
     */
    RED(30){
        @Override
        public Lamp getNextLamp() {
            return YELLOW;
        }
    },
    YELLOW(5){
        @Override
        public Lamp getNextLamp(){
            return GREEN;
        }
    },
    GREEN(20){
        @Override
        public Lamp getNextLamp(){
            return RED;
        }
    };
    private int time ;
    public int getTime(){
        return  time;
    }
    //带参构造
    Lamp(int time){
        this.time =time;
    }
    //抽象方法
    public abstract Lamp getNextLamp ();
}

@Test
public void test(){
    Lamp green = Lamp.GREEN;
    Lamp nextLamp = green.getNextLamp();
    System.out.println(nextLamp);
    Lamp[] values = Lamp.values();
    for(Lamp lamp :values){
        System.out.println(lamp.getNextLamp());
        System.out.println(lamp.getTime());
    }
}

打印输出为:

RED

YELLOW
30
GREEN
5
RED
20



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值