java之注解

来源:互联网 发布:mac系统 如何整理照片 编辑:程序博客网 时间:2024/05/07 00:27
注解是什么?这个太常见了,比如@Override ,@Deprecated等,注解(也成为元数据)为我们在代码中添加信息
提供了一种形式化的方法,使我们可以在稍后某些时刻非常方便的使用这些数据,注解在一定程度上是在
把元数据与源代码文件结合在一起,而不是保存在外部文档中这一大的趋势之下所催生的,(摘自thinking in java)


好了,不多说了,开始看看如何使用
@Target({ElementType.FIELD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String name();
String value();
int age() default 22;
Class[] clazzs();
}


@MyAnnotation(value="aa",name="me",clazzs={A.class,B.class})
public class Person {


@Test
public void test1(){
if(Person.class.isAnnotationPresent(MyAnnotation.class)){
MyAnnotation ma = Person.class.getAnnotation(MyAnnotation.class);
System.out.println(ma.value());
System.out.println(ma.name());
System.out.println(ma.clazzs().length);
}
}
}
以上是如何定义一个注解类,其实有点像接口,关键字@interface即可定义,方法中要有返回值,和属性值名
String name()--最简单的方法,使用时 name="要输入的名字";
String value()--也比较简单,特殊之处在于,如果只有value,那么可以省略value=,
比如,MyAnnotation中只有String value()或者只有这个属性没有设置default值,
使用时可以有@MyAnnotation("aa")
int age()--即值是int型的整数,这里设置了一个默认的故Person的上面可以不用写
Class[] clazzs()--属性值即为数组,
当然属性值也可以是其它的类型比如枚举类型,注解类型。


再来看@Target,@Retention
见名知意,@Target就是代表要作用的目标区域上,主要有ElementType中的TYPE,FIELD,METHOD等,

还是上图吧



 好奇的朋友可能又想要了解java中的这四大元注解又是如何来的,如何实现的,想深入了解,就迅速学习吧。


下一篇带来android中火爆的xutils的用注解实现的控件加载的源码分析,当然也用到了反射。

1 0
原创粉丝点击