自定义注解理解梳理

自定义注解


自定义注解的使用很简单,通过@interface修饰就可以称之为注解,但是在使用的时候,却有很多门道。

限制输入

首先,自定义注解可以用来限制输入。例如:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Annotationself {
    enum fieldType {
        STRING, INT
    };

    fieldType type();

    String value();
}

在这个例子中,我们限制了type的类型是枚举值,而value的类型是String类型。
在使用的时候,会强制我们使用限定的值。例如:

    @Annotationself(type = fieldType.STRING, value = "9")
    void useAnnotation(){
        System.out.println("say hello");
    }

在该例中,就要求限制type只能输入枚举fieldType中的值,而value只能是String类型的值。

使用反射获取注解内容

其次,使用注解可以通过反射的方式获取到注解的内容,

Object c = Class.forName("com.wyb.annotation.user.UserTest")
        .newInstance();
Method[] methodArray = c.getClass().getDeclaredMethods();

上面代码可以获取到类所有方法。

methodArray[i].isAnnotationPresent((Class<? extends Annotation>)Annotationself.class)

这时isAnnotationPresent这个方法就有作用了,该方法可以判断获取到的方法是否是用Annotationself这个注解过的。同理,可以通过该方法来筛选出感兴趣的方法。之后就可以通过以下代码来获取需要的信息了。

Annotationself annotation = 
    methodArray[i].getAnnotation(Annotationself.class);
String type = String.valueOf(annotation.type());

注:
上面代码中Annotationself 是自定义注解,
com.wyb.annotation.user.UserTest是测试类。

注解的使用场景远不是上面所罗列的,各位看官可以把自己的见解写在评论中,一同探讨学习。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中,自定义注解是一种元数据的形式,可以用于为类、方法、字段等程序元素添加额外的信息。通过自定义注解,我们可以在代码中添加一些标记或者配置信息,以便在运行时可以进行相应的处理或者获取这些信息。 自定义注解由 `@interface` 关键字来定义,类似于接口的定义方式。在注解中可以定义元素,用于存储相应的配置值。这些元素可以是基本数据类型、字符串、枚举类型、Class 类型、注解类型或者它们的数组。 自定义注解可以被应用于类、方法、字段等程序元素上,通过在目标元素前加上注解的方式进行标记。在编译时和运行时,我们可以使用反射机制来获取这些注解,并根据注解的信息进行相应的处理。 自定义注解的使用场景很广泛,例如: 1. 标记注解:用于标记某个类或者方法的特定属性,在编译或者运行时可以根据标记进行相应的处理。 2. 配置注解:用于为某个类或者方法提供配置信息,在运行时可以读取这些配置进行相应的逻辑处理。 3. 文档生成注解:用于为代码生成文档,例如 Java 中的 Javadoc 注解。 4. 框架扩展注解:用于扩展某个框架的功能,例如 Spring 中的一些注解用于实现依赖注入、事务管理等功能。 总之,自定义注解为我们提供了一种灵活、可扩展的方式来为代码添加元数据,以便在运行时进行相应的处理。它是 Java 编程中的一个强大工具,可以用于实现各种功能和框架的扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值