Java枚举类回顾

整理一些枚举类的笔记。。。

枚举类:

  • 包含有限个成员对象而且默认被private static final修饰
  • 私有构造方法
  • 属性和字段private final修饰

比较

在JDK1.5之后引入了枚举类关键字enum,使得枚举类的创建变得更加简单明了,下面以一个例子说明

自定义枚举类

package Enum;
/**
 * 枚举类理解
 * @author hp
 *
 */
public class MySeason {

    // 1. 提供类的属性声明为private final
    private final String name;
    private final String desc;
    // 2. 声明私有构造器,初始化final参数
    private MySeason(String name,String desc){
        this.name=name;
        this.desc=desc;
    }
    // 3. 通过公共方法得到属性
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }

    // 4. 创建枚举类对象private static final修饰
    private static final MySeason SPRING = new MySeason("spring", "spring is warm!");
    private static final MySeason SUMMER = new MySeason("summer", "summer is hot!");
    private static final MySeason AUTUMN = new MySeason("autumn", "autumn is cool!");
    private static final MySeason WINTER = new MySeason("winter", "winter is cold!");

    // 5. 可以有自己的方法
    public void show(){
        System.out.println("this is MySeason");
    }

    @Override
    public String toString() {
        return "MySeason [name=" + name + ", desc=" + desc + "]";
    }

    public static void main(String[] args) {
        MySeason spring = MySeason.SPRING; 
        System.out.println(spring);
        spring.show();
    }
}

enum关键字创建枚举类

枚举类不支持继承,但是可以实现接口

package Enum;
/**
 * 枚举类理解
 * @author hp
 *
 */
interface Info2{
    public void say();
 }
public enum MySeason2 implements Info2{

    // 4. 创建枚举类对象private static final修饰
    SPRING("spring", "spring is warm!"){
        public void say(){
            System.out.println("spring-say()...");
        }
    },
    SUMMER("summer", "summer is hot!"){
        public void say(){
            System.out.println("summer-say()...");
        }
    },
    AUTUMN("autumn", "autumn is cool!"){
        public void say(){
            System.out.println("autumn-say()...");
        }
    },
    WINTER("winter", "winter is cold!"){
        public void say(){
            System.out.println("winter-say()...");
        }
    };

    // 1. 提供类的属性声明为private final
    private final String name;
    private final String desc;
    // 2. 声明私有构造器,初始化final参数
    private MySeason2(String name,String desc){
        this.name=name;
        this.desc=desc;
    }
    // 3. 通过公共方法得到属性
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }

    // 5. 可以有自己的方法
    public void show(){
        System.out.println("this is MySeason");
    }

    @Override
    public String toString() {
        return "MySeason [name=" + name + ", desc=" + desc + "]";
    }

    public void say(){
      System.out.println("接口的公共实现方法...");
    }

    public static void main(String[] args) {
        MySeason2 spring = MySeason2.SPRING; 
        System.out.println(spring);
        spring.show();
        /*
         * 两个方法
         */
        // 1. 获得所有已的枚举类成员对象
        MySeason2[] ms = MySeason2.values();
        System.out.println(ms.length);
        // 2. 根据枚举类成员对象名获得该对象,
        //注意是枚举类内部成员名,在这里应该是SPRING而不是spring
        System.out.println(MySeason2.valueOf("SPRING"));
    }
}

测试输出:

MySeason [name=spring, desc=spring is warm!]
this is MySeason
4
MySeason [name=spring, desc=spring is warm!]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值