枚举类与注解

一、枚举类的使用

枚举类的理解

1、类的对象只有有限个,确定的。称这个类为枚举类
2、当需要定义一组常量时,强烈建议用枚举类
3、如果枚举类中只有一个对象,则可以作为单例模式的实现方式

枚举类的定义

方式一、JDK5.0之前,自定义枚举类

1、声明对象的属性:private final 修饰
因为对象是常量,所以对象的属性最好也不要更改。
2、私有化构造器,并给对象赋值
因为前面定义了对象的属性,而且是final,所以需要给属性初始化值,但是如果使用默认初始化或代码块初始化,后面创建对象时,得到的对象的属性就只能是一样的。所以使用构造器初始化
3、提供多个枚举类对象,public static final修饰
因为这里是直接在类里创建对象,所以加上了static,又因为对象是一组常量,所以加上了final。
4、其他诉求(根据实际情况进行修改)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式二、JDK5.0,可以使用enum定义枚举类

1、提供多个枚举类对象,具体形式是将前面定义时重复的部分删除。并且,每个对象之间用“,”分隔,最后一个对象用分号结尾。

在这里插入图片描述
改成
在这里插入图片描述

(后面部分和前面介绍的内容一样)
2、私有化构造器,并给对象赋值
因为前面定义了对象的属性,而且是final,所以需要给属性初始化值,但是如果使用默认初始化或代码块初始化,后面创建对象时,得到的对象的属性就只能是一样的。所以使用构造器初始化
3、声明对象的属性:private final 修饰
因为对象是常量,所以对象的属性最好也不要更改。
4、其他诉求(根据实际情况进行修改)
【注意】默认不再提供toString,这时toString打印的是对象的名字。(此时继承的是java.lang.Enum类)

Enum类的常用方法

1、values( ):返回枚举类型的对象数组,可以方便遍历所有枚举值
在这里插入图片描述

2、values( String str):根据提供的str,返回枚举类中对象名是str的对象。如果没有名为str的枚举类对象,则报异常
3、toString( ):返回当前枚举类对象名称

Enum类的实现接口

1、情况一:实现接口,在enum中实现抽象方法
在这里插入图片描述
这种情况,每个枚举类对象调用时都会执行相同的的代码

2、情况二:让枚举类对象分别实现接口中的抽象方法
在这里插入图片描述
就是在定义枚举类对象时,让每个对象都重写一次方法,这样调用不同的对象的方法时,执行的代码不同

二、注解(Annotation)

说明

JDK5.0新增
示例一:生成文档相关注解
示例二:在编译时进行格式检查(JDK内置的三个基本注解)
@Override:限定重写父类方法,只能用于方法
@Deprecated:表示所修饰元素(类、方法等)已经过时,通常是因为所修饰的结构危险或有更好的选择
@SuppressWarnings:抑制编译器警告
示例三:跟踪代码依赖性,实现替代配置文件功能

如何自定义注解

1、注解声明为@interface
2、内部定义成员,通常使用value去表示
3、可以指定成员的默认值,使用default定义
4、如果自定义的注解没有成员,表明是一个标识作用
5、如果注解有成员,使用此注解时,需要指定成员的值
在这里插入图片描述
在这里插入图片描述
【注意】自定义注解必须配上注解的信息处理流程(使用反射)才有意义

JDK提供的4种元注解

修饰注解的注解
分别有:
Retention:指定所修饰的注解的生命周期:SOURCE、CLASS(默认)、RUNTIME。只有声明为RUNTIME的注解,才能通过反射获取
在这里插入图片描述

Target:用于指定被修饰的注解能修饰哪些程序元素
Documented:表示所修饰的注解在被javadov解析时,保留下来
Inherited:被它修饰的注解具有继承性

【自定义注解通常会知名两个元注解:Retention、Target】

通过反射获取注解信息(到反射再讲)

JDK8注解的新特性

1、可重复注解
①在MyAnnotation上声明@Repeatable(MyAnnotations.class)
②MyAnnotation的Rentention和Target等元注解要与MyAnnotations的相同
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、类型注解
在这里插入图片描述

每日一考

在这里插入图片描述
4.
throw:生成一个异常对象,手动抛出,出现在方法体内
throws:处理异常。声明在方法的声明处末尾
5.
同步监视器:俗称,锁。任意类的对象都可以当锁;多个线程必须公用同一把锁
共享数据:多个线程共同操作的数据。需要用同步机制将操作共享数据的代码包起来,不能包多,也不能包少

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值