什么是ElementType.CONSTRUCTOR?

时间:2013-05-07 07:35:16

标签: java annotations

我正在学习注释和注释处理器。

我遇到了javax.validation.constraints.NotNull声明

@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})
@Retention(value=RUNTIME)
@Documented
@Constraint(validatedBy={})
public @interface NotNull

我已经对这个注释有点熟悉了。

@NotNull
public Integer getAge() {
    return age;
}

@NotNull
private String name;

private int age;

@NotNullElementType.CONSTRUCTOR的哪种用法?

1 个答案:

答案 0 :(得分:2)

ElementType.CONSTRUCTOR声明注释可以在构造函数级别上进行分类(在注释声明中指定@Target时)。

示例:

@Entity
@Table(name = "Request")
public class Request implements Serializable {

    @NotNull
    public Request() {

    }
}

Beans Validation Specification (1.0 final)表示以下内容(在 2.1约束注释一章中):

  

约束注释可以针对以下ElementType中的任何一个:

     
      
  • FIELD用于约束属性
  •   
  • METHOD用于约束的getter
  •   对于受限制的bean,
  • TYPE
  •   
  • ANNOTATION_TYPE用于构成其他约束的约束。
  •   
     

虽然不禁止其他ElementType,但提供商不会   必须识别和处理对这些类型的约束。   内置类型支持PARAMETERCONSTRUCTOR以允许Bean   验证提供程序特定扩展。它被认为是好的   练习按照相同的方法进行自定义注释。

实质上,虽然在构造函数级别上没有使用{em>建设性/有用的示例,但规范声明包含@NotNull是一种好习惯。 on annotations(因为内置注释已包含它们)。

我希望这会有所帮助。