广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JAVA自定义注解详情
  • 664
分享到

JAVA自定义注解详情

2024-04-02 19:04:59 664人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录原理:元注解:@Retention参数讲解:案例:给一个类的String属性设置默认值总结原理: 注解的本质是继承Annotation的特殊接口,其具体实现类是Java运行时生成

原理:

注解的本质是继承Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象Proxy1,通过动态代理对象,调用自定义注解(接口)的方法,最终会调用AnnotationInvocationHandler 的invoke方法.

元注解:

  • @Documented:是否将注解包含到JavaDoc中
  • @Retention:什么时候使用该注解,表明注解的生命周期
  • @Target:注解用于什么地方
  • @Inherited:是否允许子类继承改注解

@Retention参数讲解:

RetentionPolicy.SOURCE:在编译阶段丢弃,这些注解在编译结束后就不会再有意义,所以它不会写入字节码.比如@Override, @SuppressWarnings都属于这类注解。

RetentionPolicy.CLASS:在类加载的时候丢弃, 包含在类文件中

RetentionPolicy.RUNTIME:包含在类文件中,在运行时可以被获取到

@Target:参数讲解:

ElementType.TYPE:用于类,接口,枚举

ElementType.FIELD:应用于属性

ElementType.METHOD:应用于方法

ElementType.PARAMETER:用于方法的形式参数

ElementType.CONSTRUCTOR:用于构造函数

ElementType.LOCAL_VARIABLE:应用于局部变量

ElementType.ANNOTATION_TYPE:应用于注解类型

ElementType.PACKAGE:应用于包

ElementType.TYPE_PARAMETER:应用于类型变量(1.8新增)

ElementType.TYPE_USE:1.8版本新增,应用于任何使用类型的语句中

案例:

给一个类的String属性设置默认值


@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ObjectFlag {
    //默认值
    String value() default "默认值1";
}

public class ObjectTest {
    @ObjectFlag
    String name;
    @ObjectFlag
    Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

public class ObjectRun {
  public static <T> T setValueField(T t) throws IllegalAccessException {
        Class<?> cls = t.getClass();
        Field[] fields = cls.getDeclaredFields();
        for (Field field : fields) {
            boolean hasConfigField = field.isAnnotationPresent(ObjectFlag.class);
            field.setAccessible(true);//设置可以访问私有变量
            //若属性上有注解,使用注解的值作为key去配置文件中查找
            if (hasConfigField) {
                //获取注解的默认值
                Object annoValue = field.getAnnotation(ObjectFlag.class).value();
                System.out.println("当前的属性名称为:" + field.getName());
                System.out.println("当前属性类型:" + field.getGenericType().toString());
                //获取到属性的数据类型
                String type = field.getGenericType().toString();
                if (type.endsWith("String")) {//如果是字符串类型
                    field.set(t, annoValue.toString());
                }
            } else {  //若属性上没有注解,则使用属性名作为key去配置文件中查找
                System.out.println("属性" + field.getGenericType().toString() + "没有该注解");
            }
        }
        return t;
    }
}

运行结果:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之际的更多内容!

--结束END--

本文标题: JAVA自定义注解详情

本文链接: https://www.lsjlt.com/news/154338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JAVA自定义注解详情
    目录原理:元注解:@Retention参数讲解:案例:给一个类的String属性设置默认值总结原理: 注解的本质是继承Annotation的特殊接口,其具体实现类是Java运行时生成...
    99+
    2022-11-12
  • Java自定义注解的详解
    Java自定义注解Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容。在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解。Java1.5引入了注解,当前许多java框架中大量使用...
    99+
    2023-05-31
    java 自定义 注解
  • java中怎么自定义注解详解
    在Java中,可以使用`@interface`关键字来定义注解。自定义注解的语法如下: public @interface Cust...
    99+
    2023-10-28
    java
  • Java自定义注解
    目录 一、什么是自定义注解 1)Java注解简介 2)Java注解分类 JDK基本注解 JDK元注解 自定义注解 如何自定义注解? 二、自定义注解 1)获取类上注解值 2)获取类属性上的注解属性值 3)获取方法上的注解值  4)获取参数修饰...
    99+
    2023-09-06
    java 开发语言
  • 详解Java中自定义注解的使用
    目录什么是注解注解的注意事项注解的本质自定义注解使用使用方式 1使用方式 2什么是注解 在早期的工作的时候 ,自定义注解写的比较多,可大多都只是因为 这样看起来 不会存在一堆代码耦合...
    99+
    2023-03-20
    Java自定义注解使用 Java自定义注解 Java 注解
  • 详解Java如何实现自定义注解
    目录概念作用JDK中预定义的一些注解注解生成文档案例自定义注解格式本质属性:接口中的抽象方法元注解:用于描述注解的注解在程序使用(解析)注解:获取注解中定义的属性值案例:通过自定义注...
    99+
    2022-11-13
  • Java中自定义注解
    当使用Java编写应用程序时,我们常常使用注解来为程序添加附加信息,并且可以在运行时读取这些注解。除了Java提供的预定义注解外,我们还可以自定义注解来满足自己的需求。在本文中,我们将介绍Java中自定义注解的基础知识。 一、什么是注解? ...
    99+
    2023-09-24
    java 开发语言
  • Java注解详解及实现自定义注解的方法
    目录概念‍♀️作用⛹JDK中预定义的一些注解注解生成文档案例自定义注解格式本质属性:接口中的抽象方法元注解:用于描述注解的注解‍♂️在程序使用(解析)注解:获取注解中...
    99+
    2022-11-13
  • Java教程:JAVA自定义注解
    注解概念注解是Java SE 5.0版本开始引入的概念,它是对java源代码的说明,是一种元数据(描述数据的数据)。注解和注释的不同注释注释是对代码的说明,给代码的读者看,便于帮读者梳理业务逻辑;在程序代码中经常看到的以@ 开头的大部分是注...
    99+
    2023-06-02
  • Java怎么自定义注解
    这篇文章主要介绍“Java怎么自定义注解”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么自定义注解”文章能帮助大家解决问题。注解注解为我们在代码中添加信息提供一种形式化的方法,使我们可以在...
    99+
    2023-07-05
  • vue3自定义指令详情
    目录一、注册自定义指令1.1、全局自定义指令1.2、局部自定义指令二、自定义指令中的生命周期钩子函数三、自定义指令钩子函数的参数四、自定义指令参数一、注册自定义指令 以下实例都是实现...
    99+
    2022-11-12
  • Java多线程 自定义线程池详情
    主要介绍: 1.任务队列 2.拒绝策略(抛出异常、直接丢弃、阻塞、临时队列) 3.init( min ) 4.active 5.max ...
    99+
    2022-11-12
  • SpringBoot 自定义注解之脱敏注解详解
    目录自定义注解之脱敏注解一、脱敏后的效果二、代码1.脱敏注解2.定义脱敏类型3.敏感工具类4.脱敏序列化信息小结一下自己手写的一个高效自定义字符串脱敏注解自己写了个 仅供参考自定义注...
    99+
    2022-11-12
  • Java 自定义注解的魅力
    目录注解是什么?元注解是什么?标准的元注解:@Target元注解:@Retention元注解:@Documented元注解:@Inherited元注解:自定义注解实现:自定义注解的简...
    99+
    2022-11-12
  • Spring@Component自定义注解实现详解
    目录引子Java里的注解注解是什么元注解注解的保存策略自定义注解注解元素注解处理器注解是什么自己写一个@Component注解准备工作代码实现准备@MyComponent注解准备一个...
    99+
    2022-11-13
  • 【Java 注解】自定义注解(注解属性与使用)
    文章目录 前言一、自定义注解与元注解1.注解属性类型 二、注解的生命周期以及作用目标1.生命周期2.作用目标 三,简单使用四,注解属性赋值简化 前言 Java注解是一种元数据(m...
    99+
    2023-10-21
    java spring spring boot log4j 经验分享 笔记 后端
  • 详解Java拦截器以及自定义注解的使用
    目录1,设置预处理,设置不需要拦截的请求2.UserTokenInterceptor ,securityInterceptor分别处理不同的请求拦截,执行不同的拦截逻辑。3.关于注解...
    99+
    2022-11-12
  • Java增加自定义注解进行校验入参详解
    目录背景接下来,Show Time注解类注解的Aspect类controller背景 客户使用我们系统的时候,查询不带任何查询条件,查询就返回全部数据,500多万条数据啊,然后直接导...
    99+
    2023-05-15
    Java自定义注解校验入参 Java自定义注解 Java校验入参
  • 简单谈谈java自定义注解
    Java在1.5开始引入了注解,目前流行的框架都在用注解,可想而知注解的强大之处。以下通过自定义注解来深入了解java注解。一、创建自定义注解package com.sam.annotation;import java.lang.annot...
    99+
    2023-05-31
    java 自定义注解 ava
  • 怎么在java中自定义注解
    这篇文章给大家介绍怎么在java中自定义注解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。1、@Val...
    99+
    2023-06-07
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作