java 枚举类和注解学习0810
适用场景
1、当类的对象是有限个并且是确定的时建议使用
2、当需要定义一组常量(如:四季和星期)
3、如果枚举只有一个对象可以当做单例模式的实现方式
定义枚举类
jdk5以前
自定义枚举
1、私有的常量属性private+final
2、私有的构造器(可以有参数赋值)
3、内部new对象private+static+final
4、get和toString方法用于获取对象的属
jdk5以后
用enum关键字定义
1、属性默认都是private+final,所以不能显示的添加修饰符了,各个属性之间是用逗号隔开,最后一个用分号
2、构造器和get方法相同,但是不用重写tostring方法,tostring获取到的不是地址值 原因见3
3、因为父类不是Object,用类名.class.getSuperclass可以查看父类
enum枚举类的方法
tostring返回枚举对象的名称,value遍历类中的所有枚举对象用数组返回,valueof可以根据传入的枚举对象名获取相应的枚举对象然后可以考虑用对象的属性或方法 见其他方法。
其他用法
继承接口,实现接口的时候可以在对象后面直接重写接口的方法,来达到不同对象有不同效果。
像上图valueof获取对象后可以调用对象特有的方法。
注解(Annotation)
概述
可以用注解代替以前用配置文件来做的连接。
常见示例
以前用xml写配置文件当有login时需要调用com.servlet。。。,现在通过注解就知道需要调用那个方法,那个方法在继承的类中实现了。
使用
@Override,用于方法,在编译的时候会校验是否重写了方法
@Deprecated,用于类、属性、方法、构造器,会在API中标识已经过时的方法,虽然过时但是因为以前开发的软件可能还在用,为了向下兼容依然支持这些方法,但是建议开发时用推荐的新的方法,因为一是过时的方法可能存在危险(像stop结束线程,可能使得需要关闭连接的资源一直处于连接状态,不安全)二是有更好的选择。
变量如果没有使用的话会警告,抑制警告信息,suppresswarning定义为数组所以可以有多个属性值。
自定义注解
用的不多大概
这种方式定义的话一定要赋值
赋值
如果是这种就可以不赋值用默认的,当然也可在用的地方赋值,当然可以去掉value=。
如果注解没有成员起到表示作用如override
四种元注解
作用:用来修饰注解的注解,位置如下
Retention
surce只在源文件中编译时不加载,默认是class,编译时有运行时不加载,rnutime运行时被加载到内存。
只有声明为runtime的才可以被反射获取
Target
自定义通常指明上述俩
Documented和Inherited
不常用
JDK8新特性 可重复注解Repeatable
就是用自定义注解作为另外一个自定义注解的属性,不过另外一个是数组类型
2要求的应该是等注解都一样,不然继承的那个注解在my中有在mys中没有运行会报错
传入自定义的注解的名字,而且必须保证注解的生命周期一样
JDK8新特性 类型注解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix