前言:本博客内容由张孝祥Java高新技术整理而来
首先是自定义的一个注解
@Retention,决定注解存在的时期,@Target决定注解使用的地方
package com.dao.chu.movie;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
// 共有三种 SOURCE(java源文件), CLASS(class文件), RUNTIME(内存中的字节码);
@Retention(value=RetentionPolicy.RUNTIME)
// METHOD为定义在方法上,TYPE为Class的父类,可以作用在类或接口上
@Target(value={ElementType.METHOD,ElementType.TYPE})
public @interface Describe {
String color() default "red";
int[] number() default {1,2,3};
}
使用自定义注解
package com.dao.chu.movie;
@Describe(color="blue")
public class DescribeTest {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Class<Describe> clazz=Describe.class;
boolean annotation = clazz.isAnnotation();
if (annotation) {
//使用注解的方法得到注解
Describe d = DescribeTest.class.getAnnotation(clazz);
System.out.println(d);
System.out.println(d.color());
System.out.println(d.number().length);
}
}
}
输出结果:
@com.dao.chu.movie.Describe(color=blue, number=[1, 2, 3])
blue
3