824 字
4 分钟
枚举和注解
关于枚举与注解,其实主要是框架用的多,java基础部分基本来说是用不到的,特别是注解
枚举
介绍
枚举的对象只有固定的几个对象,比如季节只有春夏秋冬这四个对象
概念
枚举对应英文(enumeration 简写enum)
枚举是一组常量的集合
可以理解为,枚举是一种特殊的类,里面质保函一组有限的特定的对象
自定义类实现枚举
实现步骤
- 将构造器私有化,防止直接new一个出来
- 去掉set方法,防止属性没修改
- 在Season内部直接创建固定的对象
特点
- 构造器私有化
- 本类内部创建一组对象
- 对外暴露对象
- 可以提供get方法,但是不能提供set方法
- 对枚举对象使用 final + static共同修饰,实现底层优化
- 枚举对象名通常全部大写,常量的命名规范
示例
class Season{ private String name; private String description; public static final Season SUMMER = new Season("Summer", "The hottest season"); public static final Season WINTER = new Season("Winter", "The coldest season"); public static final Season SPRING = new Season("Spring", "The time of flowers and fruits"); public static final Season FALL = new Season("Fall", "The time of leaves and frost"); public Season(String name, String description){ this.name = name; this.description = description; } public String getName(){ return name; } public String getDescription(){ return description; }}
enum关键字实现枚举
和自定义类实现枚举差不多,但是内部创建对象只需要写SUMMER(String name,String description)//写在最前面,并且不是class是enum
示例
enum SeasonEnum{ SUMMER("Summer", "The hottest season"), WINTER("Winter", "The coldest season"), SPRING("Spring", "The time of flowers and fruits"), FALL("Fall", "The time of leaves and frost"); private String name; private String description; SeasonEnum(String name, String description){ this.name = name; this.description = description; } public String getName(){ return name; } public String getDescription(){ return description; }}
注解
概念
注解(Annotation)是Java 5.0引入的新特性,它是一种元数据(metadata)的形式,可以用来在代码中嵌入信息,这些信息可以用于生成文档,或者进行编译时进行类型检查、代码分析等。
- 注解也被称为元数据,用于修饰解释包,类,方法,属性,构造器,局部变量等数据信息
- 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息
- 在javaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等,在javaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替java EE旧版中所遗留的繁杂代码和xml配置等
基本的注解介绍
使用Annotation的时候要在在前面加上@符号 ,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素
三个基本的Annotation
- @ Override:限定于某个方法,是重写父类方法,该注解只能用于方法
- @ Deprecated:用于表示某个程序元素(类,方法等)已过时
- @ SuppressWarnings:抑制编译器警告
元注解
元注解用于修饰其他注解
种类
- Retention//指定注解的作用范围,三种SOURCE,CLASS,RUNTIME
- Target//指定注解可以在哪些地方使用
- Documented//指定该注解是否会在javadoc体现
- Inherited//子类会继承父类注解
评论