我正在浏览spray-swagger库并遇到了这段代码:
@ApiModel(description = "A pet object")
case class Pet(
@(ApiModelProperty @field)(value = "unique identifier for the pet")
val id: Int,
@(ApiModelProperty @field)(value = "The name of the pet")
val name: String)
我去了我可信赖的Scala 3ed编程副本,找出在另一个注释中使用@field
注释的语法(re:@(ApiModelProperty @field)
),但我做得很简短。我破解了@ApiModelProperty
代码,发现:
/**
* Adds and manipulates data of a model property.
*/
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ApiModelProperty {
问题:我们是否提供了编译器线索,了解@ApiModelProperty
注释应用于哪个上下文以满足其@Target
注释?
答案 0 :(得分:1)
您可以在documentation for scala.annotation.target包中找到答案。
@field
元注释用于告诉编译器名为id
的实际字段应该被视为注释的目标,而不是自动生成的accesssor / mutator方法:
id():Int
和id_=(i: Int):()
。