Вопрос пользователя:
Ответ нейросети:
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.List;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface NotNull {}
class Validator {
public static List<String> validate(Object obj) {
List<String> invalidFields = new ArrayList<>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(NotNull.class)) {
field.setAccessible(true);
try {
if (field.get(obj) == null) {
invalidFields.add(field.getName());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return invalidFields;
}
}
class Example {
@NotNull
private String name;
@NotNull
private Integer age;
public Example(String name, Integer age) {
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Example example1 = new Example("John", null);
Example example2 = new Example(null, 25);
List<String> invalidFields1 = Validator.validate(example1);
List<String> invalidFields2 = Validator.validate(example2);
System.out.println("Invalid fields in example1: " + invalidFields1);
System.out.println("Invalid fields in example2: " + invalidFields2);
}
}
Этот код создает класс Validator с методом validate(), который проверяет объект на наличие полей, помеченных аннотацией @NotNull и имеющих значение null. В методе используется рефлексия для доступа к приватным полям объекта. В примере создается класс Example с двумя полями name и age, которые помечены аннотацией @NotNull. В методе main() создаются два объекта Example с различными значениями полей и вызывается метод validate() для каждого из них. Результаты валидации выводятся на экран.
Напишите нам, если в вопросе есть ваши персональные данные ([email protected])
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.