注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。 注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。 声明一个注解需要用到: 1.修饰符:访问修饰符必须为public,不写默认为pubic; 2.关键字:关键字为@interface; 3.注解名称:注解名称为自定义注解的名称,使用时还会用到; *注解类型元素:注解类型元素是注解中内容,可以理解成自定义接口的实现部分;
自定义注解
1.先定义一个类
@Data
public class Person {
private String name;
public void demo(){}
2.在定义的类中使用注解
Data
@Info(value ="小米",num = 10)
public class Person {
@Info(value = "小欧",num = 20)
private String name;
private int age;
@Info(value = "小港",num = 30)
public void demo(){}
}
3.利用反射解析注解
/**
* 利用反射解析注解
*/
public class PersonTest {
public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException {
//获取person的class对象
Class<Person> personClass = Person.class;
Info declaredAnnotation = personClass.getDeclaredAnnotation(Info.class);
//获得属性的注解
Field declaredField = personClass.getDeclaredField("name");
Info declaredAnnotation1 = declaredField.getDeclaredAnnotation(Info.class);
//获得方法的注解
Method method = personClass.getMethod("demo");
Info declaredAnnotation2 = method.getDeclaredAnnotation(Info.class);
String value = declaredAnnotation.value();
int num = declaredAnnotation.num();
String value1 = declaredAnnotation1.value();
int num1 = declaredAnnotation1.num();
String value2 = declaredAnnotation2.value();
int num2 = declaredAnnotation2.num();
System.out.println("类上的注解值:"+value+" "+num);
System.out.println("属性上的注解值:"+value1+" "+num1);
System.out.println("方法上的注解值:"+value2+" "+num2);
}
}
4.运行结果