自定义注解

什么是注解:Annotation注解,是一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次
对比注释:注释是给开发人员阅读的,注解是给计算机提供相应信息的。
注解的作用:
编译检查:通过代码里标识注解,让编译器能够实现基本的编译检查。例如:@Override
代码分析:通过代码里标识注解,对代码进行分析,从而达到取代xml目的。
编写文档:通过代码里标识注解,辅助生成帮助文档对应的内容

 

JDK提供的注解
@Deprecated 表示被修饰的方法已经过时。过时的方法不建议使用,但仍可以使用。
一般被标记位过时的方法都存在不同的缺陷:1安全问题;2新的API取代
@Override  JDK5.0表示复写父类的方法;jdk6.0 还可以表示实现接口的方法
@SuppressWarnings 表示抑制警告,被修饰的类或方法如果存在编译警告,将被编译器忽略
	deprecation ,或略过时
	rawtypes ,忽略类型安全
	unused , 忽略不使用
	unchecked ,忽略安全检查
	null,忽略空指针
	all,忽略所有

自定义注解:定义—基本语法:

定义注解使用关键字: @interface 
定义类: class
定义接口:interface
定义枚举:enum
// #1 定义注解
@interface MyAnno1{
	
}

Demo例子:

 创建一个注解的类,里面不写内容

 

package com.umanwu.anno;

public @interface anno_01 {

}

 创建一个注解的类,里面写上内容

 

 

package com.umanwu.anno;

public @interface AnnoDemo {
	/*
	 * 格式: 修饰符 返回值类型 属性名() default 默认值
	 *   修饰符:只能是public abstract 或者不写
	 *   返回值类型:基本类型,String,Class,注解,枚举,以及以上类型的一维数组
	 *   属性名:自定义
	 *   默认值:可以省略
	 */
	public abstract String username() default "默认值";
	public Class clazz();
	public anno_01 anno01();
	public Color color();
	public String[] hobbies();
}

enum Color{
	RED,BLUE;
}

 写一个测试类,测试注解

 

 

package com.umanwu.anno;

import java.sql.Date;

@AnnoDemo(username = "jack", anno01 = @anno_01, clazz = Date.class, color = Color.BLUE, hobbies = { "打球" })
public class TestAnno {

}

说明: 在上面的注解中

 

 hobbies可以写多个值,如:hobbies = {"打球","篮球","足球"}

 hobbies中有一个值的话就可以直接写成:hobbies = "打球"

 对于value有这样的写法:


注意事项:

 

 

获取注解,即自定义注解-解析

 

package com.umanwu.anno02;

public @interface MyAnno {
	
	public abstract String value() default "默认值";

}
package com.umanwu.anno02;

@MyAnno("测试数据")
public class MyAnnoParse01 {
	
	public static void main(String[] args) {
		
		boolean flag = MyAnnoParse01.class.isAnnotationPresent(MyAnno.class);
		if(flag) {
			MyAnno annotation = MyAnnoParse01.class.getAnnotation(MyAnno.class);
			String value = annotation.value();
			System.out.println(value);
		} else {
			System.out.println("没有注解");
		}
	}
}

输出结果是:没有注解.这是为什么呢?

 

 

因为每一个自定义注解,需要使用JDK提供的元注解进行修饰才可以真正的使用。需要元注解修饰自定义注解。用于控制自定义注解使用位置,生命周期等基本信息。

下面详细说明元注解:

所以我们只需要在MyAnno注解类中加上@Retention(RetentionPolicy.RUNTIME)。如下:

 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值