java注解的全面分析

 更新时间:2017年08月04日 10:19:15   作者:大白能  
这篇文章主要介绍了java注解的全面分析的相关资料,Java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法,需要的朋友可以参考下

全面解析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 注解的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • SpringMVC视图作用详解

    SpringMVC视图作用详解

    这篇文章主要介绍了springMVC中的视图与视图解析器,springMVC视图的种类很多,默认有转发视图和重定向视图,本文就每一种视图给大家详细介绍,需要的朋友可以参考下
    2022-11-11
  • Eclipse的Debug调试技巧大全(总结)

    Eclipse的Debug调试技巧大全(总结)

    这篇文章主要介绍了Eclipse的Debug调试技巧大全(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • java实现浮点数转人民币的小例子

    java实现浮点数转人民币的小例子

    java实现浮点数转人民币的小例子,需要的朋友可以参考一下
    2013-03-03
  • Java中数组的一些常见操作和技巧分析

    Java中数组的一些常见操作和技巧分析

    这篇文章主要给大家介绍了关于Java中数组的一些常见操作和技巧分析的相关资料,数组(Array)是Java中的一种引用数据类型,是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理,需要的朋友可以参考下
    2023-08-08
  • maven中自定义MavenArchetype的实现

    maven中自定义MavenArchetype的实现

    Maven自身提供了许多Archetype来方便用户创建Project,为了避免在创建project时重复的拷贝和修改,我们通过自定义Archetype来规范显得还蛮有必要,下面就来介绍一下,感兴趣的可以了解一下
    2025-01-01
  • Spring 缓存抽象示例详解

    Spring 缓存抽象示例详解

    Spring框架自身并没有实现缓存解决方案,但是从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口,提供对缓存功能的声明,能够与多种流行的缓存实现集成。这篇文章主要介绍了Spring 缓存抽象 ,需要的朋友可以参考下
    2018-09-09
  • java对象与json对象之间互相转换实现方法示例

    java对象与json对象之间互相转换实现方法示例

    这篇文章主要介绍了java对象与json对象之间互相转换实现方法,结合实例形式分析了java对象与json对象相互转换实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • 多数据源如何实现事务管理

    多数据源如何实现事务管理

    Spring中涉及三个核心事务处理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus,PlatformTransactionManager提供事务操作的基本方法,如获取事务、提交和回滚
    2024-09-09
  • Spring @value和@PropertySource注解使用方法解析

    Spring @value和@PropertySource注解使用方法解析

    这篇文章主要介绍了Spring @value和@PropertySource注解使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Jenkins一键打包部署SpringBoot应用

    Jenkins一键打包部署SpringBoot应用

    本文主要介绍了Jenkins一键打包部署SpringBoot应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论