自定义注解,你会了吗?

自定义注解,你会了吗?

日常开发中用到了各式各样的注解,常用的注解@Override、@param、@Autowired、@Service等等,这些都是JDK或者Spring这类框架自带。在类,方法,变量,参数,包都可以用注解来注释。很多小伙伴可能还停留在使用层面,知道怎么用,但并不知道实现原理,更没亲自写过自定义注解运用在实际项目中解决问题。

 

接下来聊聊注解的基础,再聊聊自定义注解在实际项目中的使用。

 

注解作用

1、生成文档,早期最常见的@return,@param

2、在编译时进行检查,例如@Override,检查是否重写父类

3、简化配置文件,使得代码更清晰

 

什么是内置注解,元注解,自定义注解?

 

内置注解

@Override:作用在方法上,声明重写父类的方法

@Deprecated:作用方法,属性,或者类上,标识已过时

@SuppressWarings:用于抑制编译器警告,告知编译器,忽略它们产生了特殊警告

@SafeVarargs:是jdk1.7引入的注解,作用抑制在使用泛型和可变参数搭配使用产生的编译器告警

 

元注解:元注解是由JDK5.0开始提供的,不能更改,用于定义其他注解,也就是对我们自定义注解进行定义

@Target:声明注解的作用范围可以是类,方法,方法参数变量等,也可以通过枚举类ElementType表达作用类型(可以查看源码)

@Retention:声明注解保留时长的作用域,可以理解为运行环境,

    SOURCE(在源文件中有效)

    CLASS(源文件编译成Class类文件中有效)

    RUNTIME(在运行时有效)

@Documented:文档化注解,作用可以被javadoc此类工具文档化

@Inherited:声明此类能否被继承

 

自定义注解

/**
 * 元注解
 * public @interface 注解名称 {
 * 类型 属性名() default 默认值
 * }
 */
//用来声明自定义注解作用范围,变量、方法、类、包...
@Target({ElementType.METHOD, ElementType.TYPE})
//声明注解在运行时有效
@Retention(RetentionPolicy.RUNTIME)
//文档化
@Documented
//此类能否被继承
@Inherited
public @interface TestAnnotation {
    String value() default "";
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 自定义注解,你会了吗?