欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java注解的全面分析

程序员文章站 2023-12-20 23:52:58
全面解析java注解 java中的常见注解 a.jdk中的注解     @override 覆盖父类或者父接口的方法  ...

全面解析java注解

java中的常见注解

a.jdk中的注解

    @override 覆盖父类或者父接口的方法
    @deprecated 表示方法已经过时
    @suppresswarnings("deprecation") 忽略方法过时警告

b.常见的第三方注解

    例如spring中的@autowired(自动注入)

注解的分类

a.按照运行机制分

    1.源码注解
        注解只在源码中存在,编译成class文件就不存在了

    2.编译时注解
        注解在源码和class文件中都存在
        eg:@override、@deprecated、@suppresswarnings

    3.运行时注解
        在运行阶段还起作用,甚至会影响运行逻辑
        eg:@autowired

b.按照来源分

    1.来自jdk的注解
    2.来自第三方的注解
    3.自定义注解

c.元注解:注解的注解

自定义注解

1.自定义注解的语法要求

import java.lang.annotation.documented;
import java.lang.annotation.elementtype;
import java.lang.annotation.inherited;
import java.lang.annotation.retention;
import java.lang.annotation.retentionpolicy;
import java.lang.annotation.target;

@target({elementtype.method,elementtype.type})
@retention(retentionpolicy.runtime)
@inherited
@documented
public @interface description {
  string desc();
  string author();
  int age() default 18;
}

注意:

  • 使用@interface关键字定义注解
  • 成员以无参无异常方式声明
  • 可以用default为成员指定一个默认值
  • 成员类型是受限的,合法的类型包括原始类型以及string、class、annotation、enumeration
  • 如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)
  • 注解类可以没有成员,没有成员的注解称为标识注解

2.元注解

a.@target({elementtype.method,elementtype.type})

注解的作用域:

  • elementtype.constructor 构造方法声明
  • elementtype.field 字段声明
  • elementtype.local_variable 局部变量声明
  • elementtype.method 方法声明
  • elementtype.package 包声明
  • elementtype.parameter 参数声明
  • elementtype.type 类、接口

b.@retention(retentionpolicy.runtime)

注解的生命周期:

  • retentionpolicy.source 只在源码显示,编译时会丢弃
  • retentionpolicy.class 编译时会记录到class中,运行时忽略
  • retentionpolicy.runtime 运行时存在,可以通过反射读取

c.@inherited

标识性的元注解:允许子类继承

d.@documented

生成javadoc时会包含注解

使用自定义注解
语法:@注解名(成员1=成员值1,成员2=成员值2)

@description(desc="i am demo",author="boy",age=18)
public void demo(){}

解析注解

概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑

以上就是java 注解的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: