文章目录
枚举
定义 =>
枚举类型: 定义有限数量的一组同类常量
eg: 春夏秋冬
发展 =>
从很多常量(public static final…) => 难管理
到enum类型 将同类常量分至一组管理
这就是枚举类型出现的原因
使用 =>
最简单的枚举类:
public enum demo(){ SPRING,SUMMER,FALL,WINTER; }
(然后可以去构建构造方法, 并对其进行初始化操作)
其实 enum 就相当于是将 public static final 给简化了
常用方法
枚举类实现接口
直接看例子:
public Demo implements Test{
SPRING{
@Overrride
public void show(){
System.out.println("春天来了");
}
}, SUMMER{
@Overrride
public void show(){
System.out.println("夏天来了");
}
}, FALL{
@Overrride
public void show(){
System.out.println("秋天来了");
}
}, WINTER{
@Overrride
public void show(){
System.out.println("冬天来了");
}
};
}
//枚举类中, 不同常量可重写不同的方法
枚举注意事项
- 一旦定义了枚举,不要修改里面的值,除非修改是必要的
(因为大部分开发中常量都是定义好的)- 枚举类默认继承的是java.lang.Enum类而不是Object类
- 枚举类不能有子类
(因为其枚举类默认被final修饰)- 只能有private构造方法
(私有的防止被访问修改)- switch中使用枚举时,直接使用常量名,不用携带类名
正确示范 => switch(Spring); => √
反例 => switch(Demo.Spring); => ×- 不能定义name属性,因为自带name属性
- 不要为枚举类中的属性提供set方法,不符合枚举最初设计初衷
(初衷 => 本来就是final不可修改的常量要什么 set() 方法 )
注解
定义 =>
Java 注解 (Annotation) (Java标注)
特点 =>
和注释不同,Java 标注可以通过反射获取标注内容
在编译器生成类文件时, 标注可以被嵌入到字节码中
Java 虚拟机可以保留标注内容, 在运行时可以获取到标注内容
支持自定义标注
1. 内置注解
@Override (重写)
@Deprecated (废弃) => 被标注则意味着废弃的注解现在被废弃了 (啊哈哈哈哈)
@SafeVarargs (忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告)
@FunctionallInterface (函数式接口) | 编程格式检查
@Repeatable (标识某注解可以在同一个声明上使用多次)
@SuppressWarnings (抑制编译时的警告信息) => 变灰暗的类啥的标识这个注解后会不提示警告
2. 元注解
定义 =>
给其他注解注解的注解 (hhh)
常见元注解 =>
- @Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问
- @Documented - 标记这些注解是否包含在用户文档 javadoc中
- @Target - 标记这个注解应该是哪种 Java 成员
- @Inherited - 标记这个注解是自动继承的
3. 自定义注解
注解架构
ElementType(注解的用途类型)
package java.lang.annotation;
public enum ElementType {
TYPE, /* 类、接口(包括注释类型)或枚举声明*/
FIELD, /* 字段声明(包括枚举常量)*/
METHOD, /* 方法声明*/
PARAMETER, /* 参数声明*/
CONSTRUCTOR, /* 构造方法声明*/
LOCAL_VARIABLE, /* 局部变量声明*/
ANNOTAT