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