Java注解总结

什么是注解?

注解在Java SE5中被引入,可以提供用来描述程序所需要的信息,而这些信息可能是无法或很难用Java来表达的。即注解使我们能够以  将由编译期来测试和验证  的格式,存储有关程序的额外信息。

注解有什么用?

1.      注解是在实际的源代码级别保存所有的信息,享有编译期的类型检查保护

2.      如override注解,可以告诉编译期如何运行程序

3.      通过使用注解,我们可以将一些Java很难表达的信息保存在Java源代码中,并可以利用annotation API创建注解处理器,从而简化(或取代)配置文件。

JavaSE5内置了三种注解

// 重写父类的方法
	@Override
	public String toString() {
		return super.toString();
	}
	
// 抑制编译器警告
//未使用不报错  unused
//List非泛型不报错 unchecked
	@SuppressWarnings({"unused","unchecked"})
	private void save() {
		List list = null;
	}
	
// 标记方法过时
	@Deprecated
	private void save1() {
	}

创建自定义注解

注解将会编译成class文件

第一步:写元注解:

元注解:用来修饰注解的  注解

指定注解的可用范围:

ElementType枚举

@Target({

TYPE,     类声明

FIELD,     字段

METHOD,  方法

PARAMETER,   参数

CONSTRUCTOR, 构造器

LOCAL_VARIABLE  局部变量

PACKAGE  包声明

})

 

 

指定注解的声明周期

@Retention(RetentionPolicy.SOURCE)    注解只在源码级别有效,将被编译期丢弃

@Retention(RetentionPolicy.CLASS)      注解在字节码级别(class文件中)有效,但会被JVM丢弃 默认值

@Retention(RetentionPolicy.RUNTIME)   注解在运行期也保留,因此可以通过反射机制读取注解的信息

 

第二步:定义注解

注解属性要求

         1.修饰为默认或public

         2.不能有主体

         3.要求元素不能有不确定的值,即元素要么具有默认值,要么在使用注解时提供元素

public @interface Author {

	/**
	 * 注解属性
	 * 1. 修饰为默认或public
	 * 2. 不能有主体
	 */
	String name();
	int age() default 30;   // 3.带默认值的注解;  使用的时候就可以不写此属性值
}

注解属性类型为数组:

public @interface MySuppressWarning {
	
	String[] value() default {"unused ","unchecked"};
}
//使用:
@Author({"",""})
	public void save() {

	}

创建注解处理器 使用注解

注解相关的API

包名:java.lang.reflect

接口 AnnotatedElement

已知实现类:

         Class,Constructor, Field, Method,

<T extends Annotation>
T

getAnnotation(Class<T> annotationClass)
          如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。

Class类,Method类,Field类都实现了这个接口,实现了这个方法。getAnnotation()方法返回指定类型的注解对象。如果没有对应的注解,则返回null。这样就可以获得注解值从而加以使用。

使用注解的一个例子:使用注解反射实现BaseDao




  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值