Java教程

【Java】注解与自定义

本文主要是介绍【Java】注解与自定义,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、注解(Annotation)

1、由来

从JDK5.0开始增加了对元数据(MetaData)的支持,即是注解。注解其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。

2、作用

  • 框架=注解+反射+设计模式
  • 替代XML中配置,更加简洁,使用注解开发能够提高开发效率

3、常见注解

  • 生成文档相关的注解:@author、@version、@see、@since、@param、@return、@exception
  • 在编译时进行格式检查(JDK内置):@Override、@Deprecated 、@SuppressWarnings
  • 跟踪代码依赖性,实现替代配置文件功能:@WebServlet、@Transactional

二、如何自定义注解

1、说明

  • 定义新的注解类型,使用@interface关键字
  • 自定义注解自动继承了java.lang.annotation.Annotation接口
  • 注解的成员变量以无参方法的形式声明,方法名和返回值定义了该成员的名字和类型,类型只能为八种基本数据类型、string类型、class类型、enum类型、Annotation类型、以及以上类型的数组
  • 注解的成员变量名通常使用value表示,使用注解时,若只有一个属性时,可省略属性名不写
  • 默认值,使用default关键字
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Person {
    String name();

    GenderEnum gender() default GenderEnum.UNKNOWN;

    int age() default 18;

    String[] hobbies();
}

注意:自定义注解必须配上注解信息的处理流程才有意义!使用反射

2、元注解

元注解,对现有注解进行解释说明的注解。

  • @Retention:指定所修饰的注解的声明周期,枚举类RetentionPolicy中定义三种类型,SOURCE(源文件保留)、CLASS(默认,class文件保留)、RUNTIME(运行时)
  • @Target:指定注解能用于修饰哪些程序元素,在枚举类ElementType中
  • @Documented:该元注解修饰的注解所修饰的元素在提取Java doc文档时,会保留
  • @Inherited:被修饰的注解,具有继承性

JDK8新增注解

  • 可重复注解: @Repeatable,被修饰的注解可重复使用,JDK8之前使用数组实现
  • 类型注解:类型的地方都可以用,ElementType.TYPE_PARAMETER、TYPE_USE

3、注解解析

  • 类扫描+反射
这篇关于【Java】注解与自定义的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!