1.什么是注解:
注解(元数据)在一定程度上是在把元数据与源代码文件结合在一起,为我们在代码中添加信息提供了一种形式化的方法,是我们在稍后某个时刻非常方便的使用这些数据。
Java se5内置了三种注解;
@Override,@Deprecated,@SuppressWarnings;
2.定义注解:
@Documented
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}
上面就是注解@Test的定义。非常像接口的定义,事实上,与其他任何Java接口一样,注解也将会编译成class文件。
@Target用来定义你的注解将应用在什么地方,(例如一个方法或者一个域)。
@Retention用来定义该注解在哪一个级别可用,在源代码中(SOURCE),类文件(CLASS),或者(RUNTIME)。
@Documented注解表明制作javadoc时,是否将注解信息加入文档。如果注解在声明时使用了@Documented,则在制作javadoc时注解信息会加入javadoc。
@Inherited修饰的注解作用于一个类,则该注解将被用于该类的子类。
3.注解可用类型:
- 所有的基本类型(如int,short,char)
- String
- Class
- enum
- Annotation
- 以上类型的数组
4.获取注解中的值
public class MainTest {
@Test()
public void sys() {
}
public static void main(String[] args) {
Class<MainTest> sd = MainTest.class;
//判断类上面是否有注解
boolean sj = sd.isAnnotationPresent(Test.class);
System.out.println(sj);
Method[] sf = sd.getMethods();
for (Method method : sf) {
//判断方法是否添加了@Test注释
boolean sh = method.isAnnotationPresent(Test.class);
if (sh) {
//打印出注释的值
Test sg = method.getAnnotation(Test.class);
System.out.println(sg.id()+"****"+sg.name());
}
}
}
}