zoukankan      html  css  js  c++  java
  • 自定义注解

    0,总的来说,注解分为注解编写,注解用上,注解解析器,比如在spring中,注解编写和注解解析器已经写好,我们只需要用注解就好

    有个数据库的例子:https://blog.csdn.net/javazejian/article/details/71860633

    编写数据库表,字段,字段约束的注解,添加在实体类中,再写一个解析器去解析,相当于hibernate的意思,要像spring那样,加上扫描包,获得包上的类,检查类有没有相关的注解

    1,注解是java提供了一种程序元素关联任何信息和任何元数据的途径和方法

    2,注解是一个接口,程序可以通过反射来获得指定程序元素的Annotion(注解)对象,然后通过Annotion对象来获得注解里面的元数据

    3,Annotation类型定义了Annotation的名字、类型、成员默认值。一个Annotation类型可以说是一个特殊的java接口,当我们通过java反射api访问Annotation时,返回值将是一个实现了该 annotation类型接口的对象

    4,1.JDK内置系统注解

         @Override,

         @Deprecated
        2.元注解  负责注解其他注解

        1.@Target,作用在哪里,方法,类,域,构造器
        2.@Retention,什么级别保存,source,class,runtime
        3.@Documented,将注释包含在javaDoc中
        4.@Inherited,允许子类继承父类的注释
      3.自定义注解

        1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
        2.String类型
        3.Class类型
        4.enum类型
        5.Annotation类型
        6.以上所有类型的数组

      第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型;   
      第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和 String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String value();这里的参数成员就为String;  
      第三,如果只有一个参数成员,最好把参数名称设为"value",后加小括号.例:下面的例子FruitName注解就只有一个参数成员。

    5,Java在java.lang.reflect 包下新增了AnnotatedElement接口,该接口代表程序中可以接受注解的程序元素,该接口主要有如下几个实现类:

    Class:类定义
      Constructor:构造器定义
      Field:累的成员变量定义
      Method:类的方法定义
      Package:类的包定义

    访问注解元素的几种方法:

      方法1:<T extends Annotation> T getAnnotation(Class<T> annotationClass): 返回改程序元素上存在的、指定类型的注解,如果该类型注解不存在,则返回null。
      方法2:Annotation[] getAnnotations():返回该程序元素上存在的所有注解。
      方法3:boolean is AnnotationPresent(Class<?extends Annotation> annotationClass):判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false.
      方法4:Annotation[] getDeclaredAnnotations():返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。

    例题和参考:http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html#!comments

  • 相关阅读:
    python之enumerate
    PyCharm Debug 调试
    兼容性测试方法
    mongo基本命令
    mongodb启动
    安装STF
    新家
    用数组实现的最大堆(C++)
    VS2013调用GLPK求解线性规划
    转:Java读取txt文件和写入txt文件
  • 原文地址:https://www.cnblogs.com/vhyc/p/9420741.html
Copyright © 2011-2022 走看看