枚举

Java枚举详解与面试知识点
本文介绍了枚举在Java中的定义和特性,强调枚举是类中的静态变量且每个枚举实例都继承自Enum。枚举类的构造器默认为私有,因此无法通过new关键字创建实例。同时,由于反射机制的限制,也无法通过newInstance方法来实例化枚举类。

枚举定义
枚举就是一个类里定义几个静态变量,每个变量都是这个类的实例。
枚举不可以产生实例对象 new 原因:自定义的枚举,他都是继承 Enum.,构造函数默认为私有的。
面试问题
为什么枚举不能通过反射来创建一个实例?
因为newInstance方法的源码中排除了枚举类。

enum Size{
    SMALL("S"),MIDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");
    private String abbreviation;

    private Size(String abbreviation){
        this.abbreviation = abbreviation;
    }
    public String getAbbreviation(){
        return abbreviation;
    }
}
public class TestDemo4 {
    public static void main(String[] args) {
        Size size1 = Size.SMALL;
        Size size2 = Size.LARGE;
        System.out.println(size1.getAbbreviation());
        System.out.println(size1.compareTo(Size.LARGE));//枚举值的比较
        System.out.println(size1.compareTo(size2));
        System.out.println(size2.ordinal());//得到枚举值的下标
        System.out.println(size2.toString());//返回枚举常量名
        System.out.println(Size.valueOf("EXTRA_LARGE"));

        for (Size s:Size.values() //values把枚举的实例,都变成一个数组  这个方法是由编译器自己生成的
                                   //静态方法
             ) {
            System.out.println(s);
        }
        Size[] size = Size.values();
        for (int i = 0; i < size.length; i++) {
            System.out.println(size[i]);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值