java5.0新增的

需要一组常量,类的对象有限个,确定的.

自定义枚举类

  1. public class Deme03 {
  2. public static void main(String[] args) {
  3. Gender man = Gender.Man;
  4. System.out.println(man.getValue()); //男
  5. }
  6. }
  7. //自定义枚举类
  8. class Gender {
  9. //声明private final修饰
  10. private final String GENDERVALUE;
  11. //私有化构造器,并给对象属性赋值
  12. private Gender(String gendervalue) {
  13. this.GENDERVALUE = gendervalue;
  14. }
  15. //提供枚举的对象
  16. public static final Gender Man = new Gender("男");
  17. public static final Gender Woman = new Gender("女");
  18. public String getValue() {
  19. return GENDERVALUE;
  20. }
  21. }

使用enum关键字创建枚举类(默认继承Enum类)

  1. enum Gender {
  2. //简写了
  3. Man("男"), Woman("女");
  4. private final String GENDERVALUE;
  5. private Gender(String gendervalue) {
  6. this.GENDERVALUE = gendervalue;
  7. }
  8. public String getValue() {
  9. return GENDERVALUE;
  10. }
  11. }

values(); 返回枚举类型的对象数组,遍历所有的枚举值
valueof(String str); 根据str ,返回枚举类中str的对象,没有找到枚举类对象抛出异常

enum类的实现抽象方法,可以让每个对象都去重写
image.png

注解:

代码里面的特殊标记
编译时警示格式检查

  • @Override:重写父类方法,注解只能用于方法
  • @Deprecated:表示类或者方法过时, 存在更好的选择,结构危险
  • @SuppressWarnings:抑制编译器警告

自定义注解

public @interface 名字{
//定义成员,默认使用value表示
String value() default “hello” ;
}
可以指定成员默认值,使用default定义
没有成员表示标识作用
注解有成员,在使用注解是,需要指明成员的值
自定义注解必须配上注解信息处理流程(使用反射)才有意义

jdk提供的元注解

对现有的注解进行解释说明
@Retention: 用于修饰一个 Annotation 定义, 指定该 Annotation 的生命周期

  • RetentionPolicy.SOURCE:在源文件中有效(即源文件保留),编译器直接丢弃这种策略的 注释
  • RetentionPolicy.CLASS:在class文件中有效(即class保留) , 当运行 Java 程序时, JVM 不会保留注解。
  • 这是默认值 RetentionPolicy.RUNTIME:在运行时有效(即运行时保留),当运行 Java 程序时, JVM 会 保留注释。程序可以通过反射获取该注释。

@Target: 用于修饰 Annotation 定义, 用于指定被修饰的 Annotation 能用于 修饰哪些程序元素。

  • CONSTRUCTOR 描述构造器
  • FIELD 描述属性
  • LOCAL_VARIABLE 描述局部变量
  • METHOD 描述方法
  • PACKAGE 描述包
  • PARAMETER 描述参数
  • TYPE 描述类,接口注解类型或者enum声明

@Documented: 用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档。默认情况下,javadoc是不包括注解的。 定义为Documented的注解必须设置Retention值为RUNTIME。