美文网首页
六、注解

六、注解

作者: 小鱼你好 | 来源:发表于2022-05-13 14:23 被阅读0次

    基本注解:

    @Override:覆盖超类方法
    @Deprecated:一般作为过时方法标记
    @SuppressWarnings:关闭不当的编译器警告
    @SuppressWarnings(value={"deprecation"})可指定的值
    deprecation -- 使用了不赞成使用的类或方法时的警告
    unchecked -- 执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。
    fallthrough -- 当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。
    path -- 在类路径、源文件路径等中有不存在的路径时的警告。
    serial -- 当在可序列化的类上缺少 serialVersionUID 定义时的警告。
    finally -- 任何 finally 子句不能正常完成时的警告。
    all -- 关于以上所有情况的警告。

    元注解:

    @Target:注解用于什么地方,ElementType可声明
    TYPE:类、接口(包括注释类型)或枚举声明
    FIELD:字段声明(包括枚举常量)
    METHOD:方法声明
    PARAMETER:参数声明
    CONSTRUCTOR:构造方法声明
    LOCAL_VARIABLE:局部变量声明
    ANNOTATION_TYPE:注释类型声明
    PACKAGE :包声明
    @Retention:表示需要在什么级别保持注解信息,RetentionPolicy可声明
    SOURCE:注解将被编译器丢弃
    CLASS:注解在class文件中可用,但会被VM丢弃
    RUNTIME:VM将在运行期也保留注解,可通过反射读取注解信息
    @Documented:标记这些注解是否包含在用户文档中
    @Inherited:标记这个注解是继承于哪个注解类
    Java7新增:
    @SafeVarargs:忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告
    Java8新增:
    @FunctionalInterface:标识一个匿名函数或函数式接口
    @Repeatable:标识某注解可以在同一个声明上使用多次

    //定义一个注解示例
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface UseCase{
        public int id();
        public String description()default "no description";
    }
    //注解使用示例
    public class PassWordUtils{
        @UseCase(id = 47,description = "you description message"
        public boolean method(){
        ...
        }
    }
    

    注解处理器:

    //定义一个UseCase注解的处理器并调用
    public void trackUseCase(Class<?> cl){
      //通过反射查找@UseCase标记
      for(Method m:cl.getDeclaredMethods()){
        //getAnnotation获取指定类型注解对象
        UseCase uc = m.getAnnotation(UseCase.class);
        if(uc !=null){
          "Found Use Case "+uc.id+uc.description();
        }
      }
    }
    trackUseCase(PassWordUtils.class)
    

    注解元素:

    1,所有基本类型(int,float,boolean等)
    2,String
    3,Class
    4,enum
    5,Annotation
    6,以上类型的数组

    默认值限制

    元素不能有不确定的值,即必须有默认值,要么在使用注解时提供元素的值。对于非基本类型的元素不能以null作为值。如需表示null可以自己定义-1或者""作为替代

    相关文章

      网友评论

          本文标题:六、注解

          本文链接:https://www.haomeiwen.com/subject/wxpvyrtx.html