源码如下:
@Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolean required() default true; String defaultValue() default " ue000ue001ue002 "; }
由此可以看出,name的别名为value,value的别名为name 所以两者等同。
@AliasFor 给属性加别名
// value 的别名为attribute, attribute的别名为value
public @interface AliasFor { @AliasFor("attribute") String value() default ""; @AliasFor("value") String attribute() default ""; Class<? extends Annotation> annotation() default Annotation.class; }
还能看出, 定义别名必须互为别名,你等于我我等于你