枚举
用途:用于定义有限数量的同类常量
JDK1.5之前没有枚举,是如何管理同类常量的呢?
- 假设用一个类来管理同一种类型的常量时,可以将类的构造方法私有化;
- 同时暴露出静态的属性,每个静态属性对应一个常量
JDK1.5后引入枚举
更常用的方式是不进行任何赋值
枚举常用方法
枚举接口
枚举实现接口的话,每个枚举量都可以单独实现接口
枚举注意事项
- 一旦定义好枚举,最好不要修改值
- 枚举类默认继承的是java.lang.Enum,而不是Object
- 枚举类默认为被final修饰,所以不会有子类
- 枚举类构造方法必须是私有的,
- switch使用枚举类时,直接使用常量名称,不是类名.常量名称
- 不能定义name属性
- 设置新属性时,不要提供set方法
注解
注释:给人看。源文件转成.class文件时,注释不存在其中
注解:给机器看。
JAVA里的类、方法、变量、参数和包等都可以加注解。和注释不同,JAVA注解可以通过反射获取注解的内容。在编译器生成类文件时,注解可以嵌入到字节码中。JAVA虚拟机可以保留注解。
注解的用途:
- 编译格式检查
- 依赖关系描述
- 反射中解析
- 生成帮助文档
内置注解
系统已经存在的注解
流程:程序执行到某个方法或某个属性,获得该方法或属性的注解,根据注解的名称进行检查
@Override:重写,只可以添加在方法,归类到“编译格式检查”
定义在java.lang.Override
@Deprecated
@FunctionalInterface:函数式接口,如Callable、Runnable、Comparator等接口都有该注解。
函数式接口:使用lamda表达式省略匿名类的构造,并且可读性更强,但并不是所有接口都可以这般操作,只有函数式接口
函数式接口特点:
- 有且仅有一个抽象方法(可以由多个静态方法、默认方法或重写Object的方法,但只能有一个抽象方法)
@Suppresswarnings:抑制编译时警告,如定义了变量但没有使用。可以加在任何位置。
元注解
作用在其他注解的注解