zoukankan      html  css  js  c++  java
  • java注解的简单介绍

    什么是注解

    1.注解就是AnnontationAnnontation是Java5开始引入的新特征,中文名称叫做注解,它提供了一种安全的类似注释的机制,可以起到减少配置的成果,给程序起到辅助性的作用

    注解有什么用处

    1.注解可以生成文档

    2.注解可以逐渐替代配置

    3.在编译时进行格式检查

    注解的原理:

    注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1。通过代理对象调用自定义注解(接口)的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。

    自定义注解:

    自定义注解类编写的一些规则:
      1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口.
      2. 参数成员只能用public或默认(default)这两个访问权修饰
      3. 参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组.
      4. 要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,因为你除此之外没有别的获取注解对象的方法
      5. 注解也可以没有定义成员, 不过这样注解就没啥用了
    PS:自定义注解需要使用到元注解

    自定义注解实例

     import java.lang.annotation.Documented;
     2 import java.lang.annotation.Retention;
     3 import java.lang.annotation.Target;
     4 import static java.lang.annotation.ElementType.FIELD;
     5 import static java.lang.annotation.RetentionPolicy.RUNTIME;
     6 
     7 /**
     8  * 水果名称注解
     9  */
    10 @Target(FIELD)
    11 @Retention(RUNTIME)
    12 @Documented
    13 public @interface FruitName {
    14     String value() default "";
    15 }
    

      

    参考链接:https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html#undefined

  • 相关阅读:
    图像分割之Dense Prediction with Attentive Feature Aggregation
    与中文对齐的英文等宽字体
    管家订菜与Scrum流程
    说说自己在2014年的阅读思路
    Hello World
    Bootstrap实现轮播
    普通Apache的安装与卸载
    Python中OS模块
    Python中文件读写
    Python装饰器
  • 原文地址:https://www.cnblogs.com/imfjj/p/9890061.html
Copyright © 2011-2022 走看看