今天来复习一下注解。什么是注解?
Java注解(Annotation)又称Java标注,是Java1.5引进的一种珠海市机制。是代码中的特殊标记。这些标记,可以在Java程序编译、类加载以及运行时被读取,并执行相应的处理操作。
这么说有点抽象。来看看实际开发的注解的应用吧。它在开发中非常常见,比如我们使用的各种框架,@Controller、@Service、@Dao、@Data等等。除了框架实现的注解,还有Java原生注解,@Override、@Deprecated、@FuctionalInterface等基本注解。Java原生注解大多数用于【标记】和【检查】。Java原生注解除了提供基本注解意外,还有元Annotation(元注解),所谓元Annotation(元注解)即注解的注解,是用来修饰注解的。常见的元注解有@Retention和@Target。@Retention注解可以简单理解为可以设置注解的生命周期,@Target表示这个注解作用的地方,作用在方法,类,还是包等等。
此外,还有注解还可以被自定义,用来实现特定的功能。举个栗子。
步骤:生命注解,配置注解,获取使用注解
package com.teligen.backendproject.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 声明注解
*/
@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Info {
String value() default "lhx";
boolean isDelete();
}
package com.teligen.backendproject.test;
import com.teligen.backendproject.annotation.Info;
import lombok.Data;
/**
* 为Person类配置了自定义注解
* @Author:liu
* @Date: 2022/03/09
*/
@Data
@Info(isDelete = true)
public class Person {
private String name;
private Integer age;
private Boolean isDelete;
}
package com.teligen.backendproject.test;
import com.teligen.backendproject.annotation.Info;
/**
* 利用反射获取注解
* @Author:liu
* @Date: 2022/03/09
*/
public class AnnotationTest {
public static void main(String[] args) {
try {
// 获取Person类的Class对象
Person person = new Person();
Class<? extends Person> aClass = person.getClass();
// 判断是否有注解
if(aClass.isAnnotationPresent(Info.class)) {
// 获取注解
Info annotation = aClass.getAnnotation(Info.class);
System.out.println(annotation.value() + "," + annotation.isDelete());
} else {
System.out.println("Person类上没有配置注解。。");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
看最后结果,成功获取到自定义注解的内容!!
总结如下,不足之处,欢迎补充,共勉。
注解分类 | 注解说明 |
框架注解 | @Controller、@Service、@Dao、@Data等等 |
原生注解 | 基本注解:@Override、@Deprecated、@FuctionalInterface等共有7个,3个在Java.lang中,4个在Java.lang.annotation中。 |
元注解:注解的注解 | |
自定义注解 | 用来实现特定的功能 |