雖然這是不太Bean驗證API是什麼,你可以用它執行此驗證。我假設你會使用BV API的參考實現Hibernate Validator。
您可以使用簡單的驗證程序獲取否定檢查。修改@Field到
@Constraint(validatedBy = MyFieldValidator.class)
public @interface Field {
String type();
int order();
}
,並創建一個MyFieldValidator
類如下
public class MyFieldValidator implements ConstraintValidator<Field, Object> {
private int order;
@Override
public void initialize(Field annotation) {
this.order = annotation.order();
if (this.order < 0) {
// blow up
}
}
@Override
public boolean isValid(Object object, ConstraintValidatorContext constraintContext) {
return true;
}
}
如果再通過驗證,例如把對象使用Validation.buildDefaultValidatorFactory().getValidator().validate(someUser)
,任何負面訂單註釋屬性都將失敗。
防止重複是棘手的。最激動人心的選擇是在User
級別設置驗證註釋,然後使用反射逐個獲取註釋。使用類級別註釋的優點是它爲您提供了一種簡單的方法來告訴Hibernate Validator要檢查哪些類。不太重要的部分是你可能忘記註解課程。
你是否試圖確保變量在反射過程中以特定順序返回?請提供有關問題的更多信息。 –
使用Java的[apt](http://docs.oracle.com/javase/1.5.0/docs/guide/apt/GettingStarted.html),註釋處理工具。對於編譯時檢查。 [Java 7](http://docs.oracle.com/javase/7/docs/technotes/guides/apt/) –