Java注解简单使用实例解析

 更新时间:2020年06月30日 10:28:21   作者:lnlvinso  
这篇文章主要介绍了Java注解简单使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

作为java开发的IDE,idea的2020 社区办还是比较好用的,比2018版的改进不少。

一个java注解的简单例子

package main;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface TestAno {
  enum DOMAIN{
    AA,
    BB;

    public String call(String msg){
      return msg + " is called";
    }
  }
  DOMAIN type();
}

调用注解的例子

package main;
@TestAno(type = TestAno.DOMAIN.AA)
public class CallAno {
  public static void main(String[] args) {
    TestAno ano = CallAno.class.getAnnotation(TestAno.class);

    System.out.println(ano.type()); // AA
    System.out.println(TestAno.DOMAIN.AA.call("test")); // test is called
  }
}

RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;

RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;

RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

@Target:注解的作用     

  • @Target(ElementType.TYPE) //接口、类、枚举
  • @Target(ElementType.FIELD) //字段、枚举的常量
  • @Target(ElementType.METHOD) //方法
  • @Target(ElementType.PARAMETER) //方法参数
  • @Target(ElementType.CONSTRUCTOR) //构造函数
  • @Target(ElementType.LOCAL_VARIABLE)//局部变量
  • @Target(ElementType.ANNOTATION_TYPE)//注解
  • @Target(ElementType.PACKAGE) ///包
  • @Inherited:说明子类可以继承父类中的该注解

注解也可用于一些解耦的应用,框架去调用接口的多个实现类。实现类的类名和路径可能会变,只要注解不变。对框架来说是没变的,框架的逻辑可以不变。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • ReentrantReadWriteLock 读写锁分析总结

    ReentrantReadWriteLock 读写锁分析总结

    这篇文章主要介绍了ReentrantReadWriteLock 读写锁分析总结,ReentranReadWriteLock中有两把锁,一把读锁,一把写锁,关于这两把锁的介绍,需要的小伙伴可以参考一下
    2022-05-05
  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径

    java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径

    这篇文章主要介绍了java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径,需要的朋友可以参考下
    2014-04-04
  • Spring入门到精通之Bean标签详解

    Spring入门到精通之Bean标签详解

    这篇文章主要为大家详细介绍了Spring中Bean的标签,文中的示例代码讲解详细,对我们学习Spring有一定的帮助,快跟随小编一起学习学习吧
    2022-07-07
  • MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决

    MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决

    这篇文章主要介绍了MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • 详解JVM 运行时内存使用情况监控

    详解JVM 运行时内存使用情况监控

    这篇文章主要介绍了详解JVM 运行时内存使用情况监控,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • java使用Logback配置输出日志内容到文件示例代码

    java使用Logback配置输出日志内容到文件示例代码

    这篇文章主要介绍了java Logback输出日志内容到文件,要将logger.info的信息输出到文件,您可以使用Logback配置,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • SpringCloud使用Nacos保存和读取变量的配置方法

    SpringCloud使用Nacos保存和读取变量的配置方法

    在使用SpringCloud开发微服务时,经常会遇到一些比较小的后台参数配置,这些配置不足以单独开一张表去存储,而且其他服务会读取该参数,这篇文章主要介绍了SpringCloud使用Nacos保存和读取变量,需要的朋友可以参考下
    2022-07-07
  • Spring Boot Admin的使用详解(Actuator监控接口)

    Spring Boot Admin的使用详解(Actuator监控接口)

    这篇文章主要介绍了Spring Boot Admin的使用详解(Actuator监控接口),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 一篇文章带你了解java接口与继承

    一篇文章带你了解java接口与继承

    这篇文章主要介绍了Java接口和继承操作,结合具体实例形式分析了Java接口和继承与使用的相关原理、操作技巧与注意事项,需要的朋友可以参考下
    2021-08-08
  • Netty实现自定义协议编解码器

    Netty实现自定义协议编解码器

    这篇文章主要为大家介绍了Netty实现自定义协议编解码器示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论