Java自定义注解入门举例

java必知必会-java自定义注解 本文介绍了java中如何自定义注解 阅读详情

转载请注明出处:http://blog.youkuaiyun.com/Hello_Chillax/article/details/48805387

学Android也有一年多了,打算分出一半的精力来学习JavaWeb的开发。
JavaWeb中第一个接触的框架就是SpringMVC了,其中用到了“注解”这个东西。作为入门,自己写了个例子,记录一下。

我们打算写一个quary(Filter filter) 函数来根据model生成一个SQL语句。

首先,Filter.java

/**
 * Created by Xiao on 2015/9/29.
 */
@Table("User")
public class Filter {

    @Column("name")
    private String name;

    @Column("pwd")
    private String pwd;

    @Column("age")
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

接下来,Table.java && Column.java

/**
 * Created by Xiao on 2015/9/29.
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Table {
    String value();
}

/**
* Created by Xiao on 2015/9/29.
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Column {
String value();
}

最后,测试类 Test.java

/**
 * Created by Xiao on 2015/9/29.
 */
public class Test {
    public static void main(String[] args) {
        Filter filter = new Filter();
        filter.setName("肖哥");
        filter.setAge("23");
        System.out.println(quary(filter));
    }

    public static String quary(Filter filter) {
        StringBuilder sb = new StringBuilder();
        Class c = filter.getClass();
        if (!c.isAnnotationPresent(Table.class)) {
            return null;
        }
        sb.append("select * from " + ((Table) c.getAnnotation(Table.class)).value()).append(" where ");
        for (Field field : c.getDeclaredFields()) {
            Column column = field.getDeclaredAnnotation(Column.class);
            field.setAccessible(true);
            try {
                Object value = field.get(filter);
                if (value == null || (value.getClass() == Integer.class && (Integer) value == 0)) continue;
                sb.append(column.value()).append("=").append(field.get(filter)).append(" and ");
            } catch (Exception e) {
                e.printStackTrace();
            }
            field.setAccessible(false);
        }
        sb.replace(sb.lastIndexOf(" and "),sb.length(),"");
        return sb.toString();
    }
}

输出结果:

select * from User where name=肖哥 and age=23

完成。

总结:这个小例子说明了如何自定义注解。以及提供了一个应用场景。
其中涉及到了Reflect的知识,还算比较有参考价值。

Java 自定义注解 Java自定义注解Java注解简介Java元注解自定义注解代码演示 本章点知识总览: 1、Java 注解简介 2、Java 元注解(重点) 3、自定义注解 4、Aop 自定义注解的应用(重点) Java注解(Annotation) 分类 编程技术 Java注解(Annotation)又称Java标注,是JDK5.0约会的一种注释机制。 和Javadoc不同,Java标注可以通过反射获取标注内容。 ... 阅读详情

相关推荐

从零开始搭建GD32F103CBT6开发环境:VSCode配置与实战技巧

本文详细介绍了如何从零开始为国产MCU GD32F103CBT6搭建高效的VSCode开发环境。内容涵盖工具链安装、VSCode核心插件配置、工程目录结构规划、关键配置文件编写以及Makefile实战,旨在帮助开发者摆脱传统IDE束缚,利用现代化工具链提升嵌入式开发效率。

weixin_29158413的博客 448

Java基础学习第二十五讲:自定义注解

/声明自定义注解 @Retention(RUNTIME) @Target(FIELD) public @interface MyAnn {//不在showview里面实例化 public static void MyFac() {try {//获取要执行的类 Class c = Class . forName("com.woniuxy.crm.view.ShowView");//通过属性名获取属性 Field f = c . getDeclaredField("userService");

跟着老高学Java 490

时序基础模型Timer-S1:十亿参数如何革新时间序列预测

时间序列预测是数据分析与机器学习中的核心任务,旨在基于历史数据预测未来趋势。其原理在于捕捉数据中的趋势、周期性和季节性等时序依赖关系。这项技术的价值在于赋能业务决策,广泛应用于金融风控、能源管理、物联网监控和供应链优化等关键场景。传统方法依赖针对特定任务的专用模型,面临泛化能力弱和开发成本高的挑战。本文聚焦的时序基础模型,通过在海量跨领域数据上进行预训练,学习时序通用模式,并结合十亿级参数带来的强大容量,实现了性能的显著突破。这种范式转变,使得模型能够像“全科医生”一样,通过少量数据微调即可快速适应新任务,

weixin_29164843的博客 269

【Java基础】注解——自定义注解

public @interface 注解名{}看起来和定义接口很相似只是多了一个@符号 接口:public interface 接口名注解:public @interface 注解名。

橙子的博客 5828

Cesium高效渲染海量GeoJSON数据的7种优化策略与实战解析

本文深入解析Cesium高效渲染海量GeoJSON数据的7种优化策略,包括瓦片化转换、LOD分级加载、数据简化等关键技术。通过实战案例展示如何解决渲染卡顿问题,提升矢量数据加载性能,实现流畅的60FPS交互体验。特别针对GeoJSON大数据量场景提供完整优化方案。

h0i1j2k3l的博客 934

DIY玩家必备:用SSS1623芯片打造高性价比USB麦克风(附完整电路图)

本文详细介绍了如何利用SSS1623芯片DIY高性价比USB麦克风,包括元件选型、电路设计、PCB布局及调试技巧。通过完整的电路参考设计和实用建议,帮助电子爱好者打造专业级录音设备,实现免驱动即插即用功能。

weixin_29166013的博客 239

JAVA实现自定义注解

该注解功能最为强大,其所标注的方法用于编写包裹业务模块执行的代码,通知的第一个参数必须是 ProceedingJoinPoint 类型。,@Pointcut切点表达式非常丰富,可以将 方法(method)、类(class)、接口(interface)、包(package) 等作为切入点,非常灵活,常用的有@annotation、@within、execution等方式,上面的示例使用的是@annotation方式,意思就是说被Spring扫描到方法上带有@annotation中的注解 就会执行切面通知。

weixin_46155048的博客 1万+

S4HANA - Cost Elements成本要素

SAP这里面的配置逻辑很像,就是先建一个对象,然后不停给这个对象附加一些属性,给一个账户附加编号范围,附加账户组。所有模块的维度都在这个表里,看下图的GL,CO,COPA,AA,ML的都在ACDOCA里。要把这5个类型和六大要素对应,先得把六大要素和账户类型对应下(以下是个人理解,不知道对错):当然那个C是新来的,我觉得放在资产下面也行,就不画图了。S4的嵌入式分析是在业务逻辑都整套嵌入的情况下,预开发了数据模型,所以它能提供的就不仅是原始数据了,它能提供的是包含所有相关联的上下文的信息数据。

weixin_45689053的博客 2394

Java实战之自定义注解(以excel导出为案例)

Excel用于设置excel的标题和默认值@PrintExcelLog用于标识是否打印excel导出日志/*** 用于设置excel的标题和默认值*/@Component/*** 用于标识是否打印excel导出日志*/其中@Retention是用来定义生命周期,我们这里是运行时;: 可以应用于类、接口、枚举(enum)。: 可以应用于字段(包括枚举常量)。: 可以应用于方法。: 可以应用于方法的参数。: 可以应用于构造方法。: 可以应用于局部变量。: 可以应用于注解类型。

共同学习,共同成长! 2106

Linux 命令行的艺术

Linux 命令行的艺术前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统更多资源免责声明熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练...

AI天才研究院 9281

一文读懂「Chain of Thought,CoT」思维链

Chain-of-Thought(CoT)是一种改进的Prompt技术,目的在于提升大模型LLMs在复杂推理任务上的表现,对于复杂问题尤其是复杂的数学题大模型很难直接给出正确答案。如算术推理(arithmetic reasoning)、常识推理(commonsense reasoning)、符号推理(symbolic reasoning)。COT通过要求模型在输出最终答案之前,显式输出中间逐步的推理步骤这一方法来增强大模型的算数、常识和推理能力。简单,但有效。2022 年,在 Google 发布的论文。

女王の专属领地 4万+

springboot-自定义注解

第一步:定义注解第二步:配置注解第三步:解析注解int age();String sex() default "女";注意:自定义注解要用【@interface】在自定义注解中,其实现部分只能定义注解类型元素!说明:a.访问修饰符必须为public,不写默认为public;b.该元素的类型只能是基本数据类型、String、Class、枚举类型、注解类型以及一维数组;c.该元素的名称一般定义为名词,如果注解中只有一个元素,名字起为value最好;

g470641382的博客 3418

断层错动和近断层地震动联合作用下软岩隧洞衬砌损伤分析

摘要 本文提出了一种基于Python的软岩隧洞衬砌损伤分析系统,重点研究断层错动和近断层地震动的联合作用效应。系统采用有限元方法建立隧洞-围岩体系模型,通过非线性动力分析评估衬砌结构损伤。研究内容包括:1)建立考虑应变软化的软岩本构模型;2)基于位错理论模拟断层错动过程;3)合成具有速度脉冲效应的近断层地震动;4)开发完整的动力响应分析流程。结果表明,所提出的方法能有效评估软岩隧洞在复杂地质条件下的抗震性能,为工程设计提供理论依据。 关键词:软岩隧洞、断层错动、近断层地震动、损伤分析、Python、有限元法

max500600的博客 842

Java中的注解以及自定义注解

1、Annotation(注解) 概述 (1)、注解起到标识做用,比如Junit的@Test注解。 Junit会在运行时检查方法上是否存在此注解,如果存在,就通过反射来运行你的方法。注意标红的反射两个字,反射在注解里相当重要,写完你的自定义注解类后没啥用,必须要用反射才能让它动起来!所以需要对反射有了解,感兴趣的小可爱可以看下这篇:Java中的反射机制介绍 (2)、从 JDK 5.0 开...

曹举的个人博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java自定义注解

Java-Java自定义注解 文章目录Java-Java自定义注解前言1、简介2、元注解3、自定义注解3.1 自定义注解3.2 数据模型使用注解3.3 定义一个“注解解析器”3.4 运行的代码3.5 结果 前言 Java 骚操作之一:自定义注解 1、简介 注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。 2、元注解 元注解的作用就是负责注解其他注解

weixin_45020244的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java 注解与反射实战:自定义注解从入门到精通

Java注解是一种标记代码的机制,通过@interface关键字定义,可包含属性赋予其动态性。元注解(@Target、@Retention等)控制注解的作用范围和生命周期,其中RUNTIME级别的注解结合反射可实现动态逻辑(如权限校验)。反射通过getAnnotation()读取注解信息,驱动实际功能(如日志、ORM映射)。自定义注解广泛应用于框架(Spring、JPA)简化配置,体现声明式编程思想,提升代码灵活性。掌握注解+反射是进阶Java开发的关键技能。

qq_40303030的博客 3108

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java注解以及自定义注解

Java注解以及自定义注解

YIYIYI 1968

java注解详解及自定义注解实现

java注解详解及自定义注解实现

qq_43418737的博客 5507

Java自定义注解开发

一、JAVA注解 1、java注解的定义 Java注解是附加在代码中的一些元信息,用于一些工具在编译、 运行时进行解析和使用,起到说明、配置的功能。 注解相关类都包含在java.lang.annotation包中。 2、java注解的分类 2.1 JDK基本注解 2.1.1 @Override 重写 2.1.2 @Deprecated 已过时 2.1.3 @SuppressWarnings(value = ...

zxy15974062965的博客 7175

Java-Spring入门指南(八)注解,内置注解,元注解,自定义注解

Java注解是编程中的重要工具,本文系统介绍了注解的核心概念、内置注解和元注解的使用。主要内容包括: 注解的本质:既能解释程序,又能被程序读取执行逻辑 三种常用内置注解: @Override:确保方法正确重写父类方法 @Deprecated:标记过时元素 @SuppressWarnings:抑制特定编译警告 元注解的用法: @Target:限定注解作用范围 @Retention:控制注解生命周期 @Documented:使注解出现在文档中 @Inherited:实现注解继承 注解与反射的关系:通过反射机制读

2402_83322742的博客 1020

【Java】自定义注解

①:注解一般用于对程序的说明,就像注释一样,但是区别是注释是给人看的,但是注解是给程序看的。②:让编译器进行编译检查的作用,比如下边这个@Override注解是重写的意思,子类重写了父类的方法,但是改动了方法名,所以报错。public Stringg name ="张三”@0verrideinterface是用来声明一个注解的,格式public @interface 注解名{定义内容};其中的每一方法实际上是声明了一个配置参数;方法的名称就是参数的名称;

m0_75260099的博客 1369

JAVA【注解】 自定义注解

注解(也被称为元数据 )为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。注解的语法比较简单,除了@符号的使用之外,它基本与Java固有的语法一致。Java SE5内置了三种,定义在java.lang中的注解: 2.2 元注解 Java目前只内置了四种元注解。元注解专职负责注解其他的注解:·编写注解处理器解析注解注解 反射 四、反射 4.1 反射的概念 使用反射机制可以动态获取当前class的信息 比如方法的信息、注解信息、方法的参数、属性等;Class类 代表

舒克日记的博客 1871

Java 注解(入门篇) 内置注解 元注解 自定义注解

一、为什么要学习注解和反射? 注解和反射是我们所有框架的底层(比如 Springboot,Spring) 二、注释(Comments)和注解(Annotation)的区别? 注释是给程序员理解代码的,程序并不会去编译或者解析 注解不仅可以给人看还可以给程序看。 三、注解入门 1.注解的格式 @+注解名字 2.注解有检查的作用 3. 注解(Annotation)的是用区域: 方法method上比如 Override 类class 包 package 字段 几乎无所不在。 四、内置注解 1. O

半亩方糖 852

java如何自定义注解

一、什么是注解? 注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。 二、自定义注解需要的基本元素 自定义注解需要用到的东西: 修饰符:访问修饰符必须为public,不写默认为pubic; 关键字:关键字为@interface; 注解名称: 注解名称为自定义注解的名称,使用时还会用到; 注解类型元素: 注解类型元素是注解中内容,可以理解成自定义接口的

m0_58680865的博客 4767
上一篇: Notification详解
下一篇: Android Apk 代码混淆与资源文件混淆实战
肖小的人儿
博客等级 码龄12年 29粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值