学习笔记:JAVA注解(1)

JAVA注解学习笔记

一、JAVA内置注解

  1. @Override 表示当前方法将覆盖超类中的方法
  2. @Deprecated 表示当前代码已被弃用
  3. @SuppressWarnings 取消编译器的某些警告信息

以下四种注解用于定义一个注解类

  1. @Target 表示注解可以用在什么地方,可能的参数值有:
    ElementType.TYPE:注解可用于类,接口,注解类型,枚举的声明
    ElementType.FIELD:注解可用于字段声明
    ElementType.METHOD:注解可用于方法声明
    ElementType.PARAMETER:注解可用于参数声明
    ElementType.CONSTRUCTOR:注解可用于构造函数声明
    ElementType.LOCAL_VARIABLE:注解可用于局部变量声明
    ElementType.ANNOTATION_TYPE:注解可以用在注解声明上
    ElementType.PACKAGE:注解可用于包的声明
    ElementType.TYPE_PARAMETER:注解可用于类型参数声明(since 1.8)
    ElementType.TYPE_USE:类型使用声明(since 1.8)

2.@Retention 注解的生命周期,可能的参数值有:
RetentionPolicy.SOURCE:源码级别,注解将被编译器丢弃
RetentionPolicy.CLASS:注解将包含在.class文件中,但是会被虚拟机丢弃
RetentionPolicy.RUNTIME:将在运行时保留注解,可被反射机制读取注解信息
3.@Document:将注解包含在JavaDoc中
4.@Inherited:允许子类继承父类的注解

二、自定义一个注解

// 一个简单的注解定义
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DBTable {
    String name() default "DBTable";
}

// 使用注解,这里传入的的name值user就可以被反射机制读取
@DBTable(name = "user")
public class UserTable {
    ...
}

// 一个简单的DBTable注解处理器
public static void genTable(Class<?> tClass) {
    DBTable dbTable = tClass.getAnnotation(DBTable.class);
    if (dbTable == null) {
            System.out.println("Not a DBTable class!");
            return;
    }
    System.out.println("Create table " + dbTable.name());
}

public static void main(String[] args) {
    genTable(UserTable.class);  // 输出 create table user
}

猜你喜欢

转载自blog.csdn.net/cfmy_ban/article/details/81296432
今日推荐