如何阅读/理解以下Java语句?
Class<?>[] groups() default {};
Class < ? extends Payload>[] payload() default {};
我认为我可以单独理解它们,但是我不知道我是否对它的整体含义有很好的认识。
个人:
Class<?>
表示任何类,Class< ? extends Payload>
表示扩展Payload
类的任何类[ ]
似乎是指任何类数组。正确吗?groups()
和payload()
是方法名称。default{}
在没有实现时使用它吗? 我真的不确定如何理解以上陈述吗?任何帮助将不胜感激。
答案 0 :(得分:5)
默认{}->在没有实现时使用它吗?
在注释定义中,可以为参数指定默认值。默认后的{}
是一个空数组的数组文字。您也可以将其设置为一些非空值。这也适用于其他对象。例如lombok的Data
批注,其中声明了默认字符串:
public @interface Data {
String staticConstructor() default "";
}
Class表示任何类别,“ Class <?扩展有效载荷>”表示任何类别 扩展了Payload类
是
[]->似乎是指任何类的数组。正确吗?
是
groups()和payload()是方法名称。
它们是注释声明中使用的参数的名称,以及这些值的getter方法的名称。例如,您可以定义:
@Data(staticConstructor = "of") class Foobar {}
然后您可以使用创建的getter方法获取值:
Data dataAnnotation = Foobar.class.getAnnotation(Data.class);
String staticConstructor = dataAnnotation.staticConstructor();
请注意,除非注释定义也用@Retention(RetentionPolicy.RUNTIME)
注释,否则您实际上将无法在运行时检索注释的值。