zoukankan      html  css  js  c++  java
  • Java注解(Annotation)

    一、元注解()

      @Target   表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中
      @Retention   表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy 中
      @Documented  将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。
      @Inherited   允许子类继承父类中的注解。

    1、@Target包括:

      ElemenetType.TYPE----------------------------------- 类,接口(包括注解类型)或enum声明
      ElemenetType.METHOD ---------------------------------方法声明

      ElemenetType.CONSTRUCTOR-----------------------------构造器声明
      ElemenetType.FIELD ----------------------------------域声明(包括 enum 实例)
      ElemenetType.LOCAL_VARIABLE------------------------- 局部变量声明
      ElemenetType.PACKAGE --------------------------------包声明
      ElemenetType.PARAMETER ------------------------------参数声明

    2、@Retention包括:

      RetentionPolicy.SOURCE-------------注解将被编译器丢弃
      RetentionPolicy.CLASS -------------注解在class文件中可用,但会被VM丢弃
      <!--一般用此注解-->
      RetentionPolicy.RUNTIME -----------VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

    二、内置注解(预置的注解)

      @Deprecated:  标记过时的元素,调用使用@Deprecated 注解的方法后,编译器会警告提醒
      @Override:  修饰需要被重写的方法
      @SuppressWarnings  阻止警告,如:在某方法上使用@SuppressWarnings("deprecation")

    三、自定义注解

      注解通过 @interface 关键字进行定义。

    public @interface TestAnnotation {
    }

    四、Annotation 的作用

    • 标记,用于告诉编译器一些信息
    • 编译时动态处理,如动态生成代码,动态添加逻辑
    • 运行时动态处理,如得到注解信息

    五、注解与反射

    public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) {}
    
    public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {}
    
    public Annotation[] getAnnotations() {}
  • 相关阅读:
    python 发邮件乱码
    膳魔师杯使用注意事项
    了解指针,分分钟的事情 C++筆記--指針
    海淘攻略
    【转】Cocos2dx.3x入门三部曲
    在Windows7上搭建Cocos2d-x 3.2alpha0开发环境
    黑苹果 MAC OS X 10.10.2 安装流程
    Linux 下如何查找木马并处理
    js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
    泰*网 Centos 一些命令
  • 原文地址:https://www.cnblogs.com/donleo123/p/14069010.html
Copyright © 2011-2022 走看看