Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。
注解分类:内置注解(也成为元注解 jdk 自带注解)、自定义注解(Spring框架)
例如:
(1) @SuppressWarnings 在程序前面加上可以在javac编译中去除警告 (2) @Deprecated 带有标记的包,方法,字段说明其已过时 (3)@Overricle 打上这个标记说明该方法是将父类的方法重写
@ SuppressWarnings 案例演示
@SuppressWarnings({ "all" }) public void save() { java.util.List list = new ArrayList(); }@Deprecated 案例演示
new Date().parse("");@Overricle 案例演示
@Override public String toString() { return null; }看图:
元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。
@Target说明了Annotation所修饰的对象范围: Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。
1.CONSTRUCTOR:用于描述构造器 2.FIELD:用于描述域 3.LOCAL_VARIABLE:用于描述局部变量 4.METHOD:用于描述方法 5.PACKAGE:用于描述包 6.PARAMETER:用于描述参数 7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
表示需要在什么级别保存该注释信息,用于描述注解的生命周期 (即:被描述的注解在什么范围内有效)
使用@interface 定义注解。
@Target(value={ElementType.METHOD,ElementType.FIELD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @interface myAnnotation{ //注意是int类型 int myId() default 0; //有default,代表这个参数可选 String myName() default ""; //没有default,则代表使用注解时,这个参数必写 String [] myArrays(); }使用自己定义的注解:
/** * TYPE:用于描述类、接口(包括注解类型) 或enum声明 */ @myAnnotation(myId=1,myName="wangyongsheng",myArrays={"23","24"}) public class Test002 { /** * FIELD:用于描述域 */ @myAnnotation(myName="dasheng",myArrays={"23","24"}) public String name; /** * METHOD:用于描述方法 */ @myAnnotation(myId=1,myArrays={"23","24"}) public void add(){ } }手动完成案例,ORM框架实体类与表字段不一致,底层生成sql语句原理。 看下图:
运行结果: