Проверка строки Java с использованием значений перечисления и аннотации

Я хочу проверить строку по набору значений с помощью аннотации. Я хочу в основном это

@ValidateString(enumClass=com.co.enum)
String dataType;

int maxValue;
int minValue;
int precision;

или

@ValidateString(values={"String","Boolean", "Integer"})
String dataType;

int maxValue;
int minValue;
int precision;

. Я также хочу сделать некоторую проверку других переменных в зависимости от значения, установленного в dataType,

if (dataType = "String") maxValue, minValue, precision все должны быть нулевыми или нулевыми.

Я не могу придумать, как добиться этого с помощью специальных аннотаций .. . .

Кто-нибудь, пожалуйста, помогите мне

25
задан mre 9 June 2011 в 14:43
поделиться

1 ответ

Немного импровизации с Потоком API Java 8

import static java.util.stream.Collectors.toList;
import static java.util.stream.Stream.of;
import java.util.List;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class EnumValidatorImpl implements ConstraintValidator<EnumValidator, String> 
{
  private List<String> valueList = null;
  @Override
  public boolean isValid(String value, ConstraintValidatorContext context) {
    return valueList.contains(value.toUpperCase());
  }
  @Override
  public void initialize(EnumValidator constraintAnnotation) {
    valueList = of(constraintAnnotation.enumClazz().getEnumConstants()).map(e->e.toString()).collect(toList());
  }
}
0
ответ дан 28 November 2019 в 18:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: