自定义注解
记录一点关于自定义注解的小事儿
记录一些遇到过的问题
“Cannot find method 'value'”
定义了一个自定义注解,
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface EnumConvert {
String path();
}
然后在使用的时候,
@EnumConvert("com.carrot.common.constants.SexEnum")
当这样写的时候,就报了一个错,—— “Cannot find method 'value'”
奇怪了!!!
明明之前也有这样写过,为什么这次就提示这个玩意儿呢,
当写成
@EnumConvert(path = "com.carrot.common.constants.SexEnum")
的时候,就可以了。
但作为一个开发人员不太能够忍受这个事儿(主要是还有点时间),
然后查了一下,
原来,在注解里面,如果不想指定属性,并不是任意属性都可以省略这个 "xx属性="这个的,
它是有条件的,只有这个属性为 value 的时候,才可以省略。emmm, 就仅 value 这个名称。
于是, 把自定义注解写成:
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface EnumConvert {
String value();
}
它果然就好了。
好吧,一个小知识的记录