小白学Java之枚举和注解

    科技2025-05-26  52

    本文参考自:https://blog.csdn.net/qq_35385687/article/details/90147104 和https://www.cnblogs.com/jingmoxukong/p/6098351.html https://blog.csdn.net/heyrian/article/details/80764783 (谢谢大佬们) 首先对于枚举,有一张很适合的图片:

    对于我来说,枚举就像是一个类,一种特殊的类,官方定义为:“一组固定的常量组成合法值的类型,如一年四季,人类的性别”,而在出现枚举之前,是有过 int 枚举模式和String 枚举模式,但都由于编译存在的缺点,而逐步被枚举给淘汰了。(主要在于,当出现问题时候,int和String的编译过程是会有问题的,而枚举则是:编译会失败,并出现错误信息,而不编译直接运行的话,会抛出异常)。

    枚举的特点

    首先是他的形态:

    enum-modifiers enum enumname{ enum-body } enum-modifiers 代表枚举的修饰符,比如public private enumname 就是对应的枚举的名字 enum-body 也就是对应的枚举里的东西

    差不多可以是这样:

    public enum color{ blue,red,yellow; }

    再说说枚举的特点:

    枚举是不能继承的,其实是因为enum 继承自 Java.lang.enum,而Java是不能多继承的,所以就等于他不能继承枚举是可以有接口和方法的,亲自试验了一下枚举里的类型,是默认处于 final ,static和public 所以可以直接调用

    总的来说,除了不能继承以外,完全可以把枚举当做一个普通的类,甚至是(类)数组来看待。又或者说他和class的区别就是:class new 出来的实例对象。这下就好理解了。只是,class,new对象,可以自己随便new,想几个就几个,而这个enum关键字,他就不行,他的实例对象,只能在这个enum里面体现。也就是说,他对应的实例是有限的。这也就是枚举的好处了,限制了某些东西的范围,

    枚举的方法

    方法名称描述values()以数组的形式返回枚举类型的所有成员valuedOf()将普通字符串转换为枚举实例compareTo()比较两个枚举成员在枚举中的顺序(注意是顺序)ordinal获取枚举成员的索引位置

    当然除了这些方法以外,还有很多可以实现的和自定义的方法。。(现在就是做一个了解,当时候用到再说hhhhh)

    EnumSet和EnumMap

    对于EnumMap的话就是:

    是专门为枚举类型量身定做的 Map 实现。虽然使用其他的 Map(如 HashMap)实现也能完成枚举类型实例到值的映射,但是使用 EnumMap 会更加高效。

    HashMap 只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以 EnumMap 使用数组来存放与枚举类型对应的值,使得 EnumMap 的效率非常高

    而对于EnumSet的话:

    EnumSet 是枚举类型的高性能 Set 实现,它要求放入它的枚举常量必须属于同一枚举类型。EnumSet 提供了许多工厂方法以便于初始化

    Java的注解

    对于注解的认识就更加浅薄了。 基本上就是走马观花一样的,看看就行了。

    Processed: 0.008, SQL: 8