Java注解的属性

本文深入探讨了Java中@Deprecated注解的源码,强调了使用注解时属性的规则,包括属性默认值的影响。同时,文章分析了Servlet的@WebServlet注解,解释了value和urlPatterns属性在指定请求路径上的作用,以及如何根据属性的默认值简化注解的使用方式。
摘要由CSDN通过智能技术生成

一、@Deprecated注解源码

@Deprecated注解源码为例,两个红框的就是属性(虽然看着很像方法)

@Deprecated注解源码

二、注意:

  1. 如果属性后面没加default的话,那在用这个注解的时候一定要 显式地给出 属性名 = 属性值
    • 如:@Deprecated(since = "1")
  2. 如果属性名是value只有这一个属性的时候,使用注解可以不写出属性名,直接给值就行
  3. 如果除了value还有其他属性的话,且其他属性没有给出默认值的话,就不能省略value的属性名了(如第二行的@Retention注解,后面没跟属性名,实际上就是只有一个叫value的属性)
    在这里插入图片描述

三、如果除了value有其他属性,且其他属性没给default

public @interface Anno {
    String value();

    String name();

}

用的时候不显式地给出value属性名的话就抛异常

在这里插入图片描述

四、如果除了value有其他属性,其他属性有给default

public @interface Anno {
    String value();

    String name() default "";

}

可以省略value这个属性名

在这里插入图片描述

五、属性类型可以是哪些

byte short int long float double boolean char String Class 枚举类型以及它们的数组形式

:用的时候如果数组只有一个元素的话,可以不写大括号{}

六、Servlet的@WebServlet源码

@WebServletvalueurlPatterns效果是一样的,都是为了指定url的请求路径

之所以重复给出两个效果一样的属性,就是因为如果在@WebServlet里只配置路径而不需要配置其他的话,就可以省略value属性名直接给路径(因为其他属性都给default了

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {

    String name() default "";

    /**
     * A convenience method, to allow extremely simple annotation of a class.
     *
     * @return array of URL patterns
     * @see #urlPatterns()
     */
    String[] value() default {};

    /**
     * @return array of URL patterns to which this Filter applies
     */
    String[] urlPatterns() default {};

    int loadOnStartup() default -1;

    WebInitParam[] initParams() default {};

    boolean asyncSupported() default false;

    String smallIcon() default "";

    String largeIcon() default "";

    String description() default "";

    String displayName() default "";
}
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值