java自定义注解的使用-例子(包含 类注解、方法注解、字段注解)

本文介绍了Java自定义注解的使用,包括定义注解、应用位置、生命周期,以及如何在运行期通过反射读取注解。详细展示了类注解、方法注解和字段注解的示例代码及其运行结果。
摘要由CSDN通过智能技术生成

注解的使用

参考资料:https://www.liaoxuefeng.com/wiki/1252599548343744/1265102413966176 。

一 简介

  • 可使用范围:类、方法、字段、参数。

  • 类型(大致三类):

1 编译器使用的注解

这类注解不会被编译进入.class文件,它们在编译后就被编译器扔掉了。比如:@Override、@SuppressWarnings。

2 由工具处理.class文件使用的注解

有些工具会在加载class的时候,对class做动态修改,实现一些特殊的功能。这类注解会被编译进入.class文件,但加载结束后并不会存在于内存中。这类注解只被一些底层库使用,一般我们不必自己处理。

3 在程序运行期能够读取的注解

它们在加载后一直存在于JVM中,这也是最常用的注解。

二 自定义注解

1 定义注解

使用 @interface 修饰,且每个值都需要设置默认值。

public @interface Figo {
    String name() default "rw";
    String desc() default "说明";
}

2 定义注解的应用位置

使用 @Target 可以定义Annotation能够被应用于源码的哪些位置。

  • 类或接口:ElementType.TYPE;
  • 字段:ElementType.FIELD;
  • 方法:ElementType.METHOD;
  • 构造方法:ElementType.CONSTRUCTOR;
  • 方法参数:ElementType.PARAMETER。
//@Target({ElementType.METHOD,ElementType.FIELD})
@Target(ElementType.METHOD)
public @interface Figo {
    String name() default "rw";
    String desc() default "说明";
}

3 定义注解的生命周期

使用 @Retention 定义了Annotation的生命周期。如果@Retention不存在,则该Annotation默认为CLASS。因为通常我们自定义的Annotation都是RUNTIME,所以

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java自定义注解使用场景有很多,以下是其中几个常见的场景: 1. 代码级别的标记:自定义注解可以用来将特定的标记注解到代码中,以便在后续的处理中能够根据这些标记进行相应的逻辑处理。比如,可以自定义一个注解来标记某个方法需要进行性能监控,然后在运行时通过反射获取到被标记的方法,从而进行性能监控的统计。 2. 配置文件读取:自定义注解可以用来读取配置文件中的参数值,从而简化配置文件的读取和解析过程。比如,可以自定义一个注解来读取配置文件中的数据库连接信息,然后通过反射获取到被标记的字段,并将配置文件中的参数值设置到对应的字段上。 3. 代替XML配置文件:自定义注解可以用来代替繁琐的XML配置文件,从而简化配置的过程。比如,可以自定义一个注解来标记某个需要在启动时进行初始化,然后在启动时扫描所有被标记的,并进行相应的初始化操作。 4. AOP编程:自定义注解可以用来实现面向切面编程(AOP),将横切逻辑从业务逻辑中解耦出来。比如,可以自定义一个注解来标记某个方法需要进行事务处理,然后在运行时根据该注解进行事务的开启、提交或回滚。 总的来说,自定义注解使用场景较为广泛,可以根据具体的需求来合理地运用。它能够提高代码的可读性和维护性,同时也能够简化一些繁琐的操作,提高开发效率。但需要注意的是,自定义注解只是一种元数据的定义,需要通过反射等手段来读取和处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值