13、枚举和注解

目录

一、枚举(enum)

枚举属于一种特殊的类,里面只包含了一组优先的特定对象

可以取代传统常量的定于方式,即将常量封装在类或接口中

1、枚举的定义

(1)自定义实现枚举

  • 私有化构造器,防止新建对象
  • 提供getXxx方法,对外暴露,但不提供setXxx方法,因为枚举对象值通常为只读
  • 对枚举对象/属性使用final + static共同修饰,实现底层优化
  • 枚举对象名通常使用大写(常量命名规范)
  • 枚举对象根据需要,可以有多个属性

(2)enum关键字实现枚举(将class换成enum即可)

  • 当我们使用enum关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类

  • 自定义枚举中public final static Secson SPRING = new Season("春", 雨);

    在枚举类中可简化为SPRING("春", 雨);,会调用构造器

  • 若调用无参构造器创建常量对象,可省略()

  • 多个枚举对象,使用,间隔,分号;结尾

  • 枚举对象必须放在枚举类的行首

2、enum常用方法

(1)toString():Enum类已经重写过,返回的是当前的对象名,子类可以重写该方法

(2)name():返回当前对象名(子类不能重写)

(3)ordinal():返回当前对象编号

(4)values():返回当前枚举类中所有常量(返回一个数组)——可以用foreach遍历

(5)valueOf():将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常

(6)compareTo():比较两个枚举对象编号,对象A.compareTo(对象B)——》对象A编号减对象B编号

3、枚举的使用细节

(1)枚举类不能继承其他类,枚举类隐式继承Enum类,Java单继承

(2)可以实现接口

二、注解(Annotation)

1、什么是注解?

(1)注解也称为元数据(Metadata),用于修饰解释包,类,方法,属性,构造器,局部变量等数据类型

(2)和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码块中的补充信息

(3)在javaSE中,注解使用目的很简单,例如标记过时功能,忽略警告等

​ 在JavaEE中,注解占据了更重要的角色

2、三个基本的注解

(1)@Override使用说明

  • @Override表示指定重写父类的方法,若父类中没有则报错
  • 不写@Override注解,但仍然重写,依然构成实际上的重写
  • @Override只能修饰方法,不能修饰其他类,包,属性等
  • 修饰注解的注解称为元注解

(2)@Deprecated使用说明

  • 用于表示某个原生已经过时
  • 可以修饰方法,类某字段,包,参数等
  • @Deprecated的作用可以做到新旧版本的兼容和过渡

(3)@SuppressWarning({...})使用说明

  • @SuppressWarning({...}):用于忽略警告,大括号内传入具体忽略信息的类型
  • 参数意义
    • unchecked:忽略没有检查的警告
    • rawtypes:忽略传参时没指定泛型的警告
    • unused:忽略没有使用的警告

3、四种元注解

修饰注解的注解

(1)@Retention:指定注解的作用范围

@Retention(RetentionPolicy.SOURCE)
  • SOURCE:编译器使用后,直接丢弃这种策略的注解
  • CLASS:编译器将把注解记录在class文件中,运行时,JVM不会保留注解
  • RUNTIME:JVM会保留注解,程序通过反射获取该注解

(2)@Target

用于修饰注解定义,用于指定被修饰的注解能用于修饰哪些元素

(3)@Docamented

(4)@Inherited

被修饰的注解将具有继承性

上一篇:枚举的使用


下一篇:Java Enum枚举 Enum类 带有构造方法的枚举 带有抽象方法的枚举