Java里自带的:
//Define a Bean
class Person {
@NotNull private String id;
@Size(max = 3) private String name;
private int age;
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
}
//Test Class
@Test
public void testJDKAnnotation_NotNull() {
Person person = new Person(null, "Richard3", 8229);
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();
Set<ConstraintViolation<Person>> violationSet = validator.validate(person);
Iterator<ConstraintViolation<Person>> iterator = violationSet.iterator();
while(iterator.hasNext()) {
ConstraintViolation<Person> personConstraintViolation = iterator.next();
System.out.println(personConstraintViolation);
}
}
//Output:
ConstraintViolationImpl{interpolatedMessage='may not be null', propertyPath=id,
rootBeanClass=class com.coupang.mapi.domain.product.vendoritem.Person,
messageTemplate='{javax.validation.constraints.NotNull.message}'}
ConstraintViolationImpl{interpolatedMessage='size must be between 0 and 3', propertyPath=name,
rootBeanClass=class com.coupang.mapi.domain.product.vendoritem.Person,
messageTemplate='{javax.validation.constraints.Size.message}'}
写了@NotNull ,然而Bean可以正常创建,然后用一个Validator去validate它。。。
对于下面这种用法是无效的:
public void testNotNull(@NotNull String input) {
//Preconditions.checkNotNull(input); //Guava will throw NullPointerException
System.out.println("Hello, " + input);
}
Use Lombok.NonNull:
import lombok.NonNull;
...
public void testNotNull(@NonNull String input) {
//Preconditions.checkNotNull(input);
System.out.println("Hello, " + input);
}
Will throw NullPointException if input is null.
总结:
有点蛋疼。