Вопрос пользователя:
Ответ нейросети:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface NotNull {}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface MinLength {
int value() default 3;
}
public class Validator {
public static List<String> validate(Object obj) {
List<String> invalidFields = new ArrayList<>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (field.isAnnotationPresent(NotNull.class)) {
try {
if (field.get(obj) == null) {
invalidFields.add(field.getName());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return invalidFields;
}
public static Map<String, List<String>> advancedValidate(Object obj) {
Map<String, List<String>> invalidFieldsMap = new HashMap<>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
List<String> errorMessages = new ArrayList<>();
if (field.isAnnotationPresent(NotNull.class)) {
try {
if (field.get(obj) == null) {
errorMessages.add("Field cannot be null");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
if (field.isAnnotationPresent(MinLength.class)) {
MinLength annotation = field.getAnnotation(MinLength.class);
try {
String value = (String) field.get(obj);
if (value != null && value.length() < annotation.value()) {
errorMessages.add("Field length must be at least " + annotation.value());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
if (!errorMessages.isEmpty()) {
invalidFieldsMap.put(field.getName(), errorMessages);
}
}
return invalidFieldsMap;
}
}
Напишите нам, если в вопросе есть ваши персональные данные ([email protected])
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.