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等,
提供了一种形式化的方法,使我们可以在稍后某些时刻非常方便的使用这些数据,注解在一定程度上是在
把元数据与源代码文件结合在一起,而不是保存在外部文档中这一大的趋势之下所催生的,(摘自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
- java之注解 自定义注解
- Java注解之常用注解
- java注解之初识注解
- java之注解
- java之注解
- Java高新技术之注解
- Java之注解篇
- java之反射-注解
- Java之注解篇
- java基础之注解
- Java注解之分类
- Java常识之-注解
- 【java-之路】注解
- java学习之注解
- Java之------注解 ( Annotation )
- java注解之二
- Java之@SuppressWarnings注解
- java之注解
- 积性函数系列(一):欧拉函数
- 如何配置风骚的android studio编辑器,让编程更优雅?
- redis.conf 配置文件详解
- zzuacm集训day1
- HTML5学习(二)—3
- java之注解
- 剑指Offer----面试题36:数组中的逆序对
- GeekBand C++ 面向对象高级编程(上) 第二周笔记
- scrapy:LookupError: unknown encoding: 'unicode'
- UVA 12186 Another Crisis [树形dp]
- SQL truncate 、delete与drop区别
- priority_queue
- Strategy Pattern
- Shell脚本编程总结及速查手册