Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 33

Рефлексия (объекты класса)

26.03.2020, 21:31. Показов 2395. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Рабочая среда NetBeans IDE 8.2
Товарищи. Большая и великодушная просьба помочь.. Возникла проблемка в написании рефлексии в методе для объекта..
Моё задание выглядит так:

Создайте класс UserChecker.
В нем создайте статичный метод для проверки объекта класса User на валидность.

User должен содержать приватные поля:
Java
1
2
3
4
String surname;
String name;
int age;
String email;
Добавьте конструктор по умолчанию и с параметрами.

Создать исключение UserValidException, которое будет содержать информацию
о том, какое поле не проинициализировано, либо о поле, которое содержит неправильное значение.

Метод должен с помощью рефлексии проверять все поля.
Метод должен выкидывать UserValidException исключение с информацией о поле,
которое не соответствует требованиям.
(нужно создать UserValidException)

Требования к юзеру:
-поля не должны быть равны null
-имя или фамилия не должны содержать числа или специальные символы
-почта должна содержать 1 или более символов до @, 1 или более символов от собачки до точки,
и не меньше двух символов после точки, почта не должна содержать специальных символов, кроме: _ @ .


Проблема возникает на этапе "Метод должен с помощью рефлексии проверять все поля."
Не совсем пойму, как грамотно эту рефлексию написать..
Я пишу:
Java
1
2
3
4
5
6
7
8
9
public static void method(User test_user) throws UserValidException{
        Field surname = User.getClass().getDeclaredField("surname");      // в этом поле выбивает ошибку с методом getClass()
        surname.setAccessible(true);
        try {
             throw new UserValidException(test_user);
        } catch (UserValidException ex) {
            System.out.println("ex = " + ex);
        }
    }
Прошу, помогите пожалуйста решить эту проблему..
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2020, 21:31
Ответы с готовыми решениями:

Объекты класса FileReader
Вопросы к экзамену. Скиньте ссылки. Объекты класса FileReader. Основные свойства и методы. Пример использования. Вызываемые...

Доступ к полям родительского класса (Рефлексия)
Здравствуйте. Есть вот такая конструкция, напишу упрощённо: public partial class A : UserControl { public class B : A {} ...

Событие из базового класса, рефлексия, PropertyChanged
Доброго времени суток. Прошу подсказать, схема следующая: - Работает в форме, с три вьюшкой. - Есть базовый абстрактный класс с...

3
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.03.2020, 08:20
Лучший ответ Сообщение было отмечено Vladislav_16 как решение

Решение

Vladislav_16,
Цитата Сообщение от Vladislav_16 Посмотреть сообщение
Field surname = User.getClass().getDeclaredField("surnam e");
--> Field surname = test_user.getClass().getDeclaredField("surname");

Дальше почитай матчасть про исключения
1
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
27.03.2020, 14:06
Vladislav_16, так?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.lang.reflect.Field;
 
public class Helper {
 
    public static void main(String[] args) throws IllegalAccessException {
        User [] users = new User[3];
        users[0] = new User("Poll", "Foo", 28, null);
        users[1] = new User("Polly", "Foo", 26, "foo@com");
        users[2] = new User("Poll", null, 28, "foo@com");
        for (User tmpUser : users){
            Class aClass = tmpUser.getClass();
            for (Field aFild : aClass.getDeclaredFields()){
                aFild.setAccessible(true);
                Object value = aFild.get(tmpUser);
                if (value == null)
                    System.out.printf("The field \"%s\" is not declared\n", aFild.getName());
 
            }
        }
    }
 
}
 
class User {
    private String surname;
    private String name;
    private int age;
    private String email;
 
    User(String surname, String name, int age, String email) {
        this.surname = surname;
        this.name = name;
        this.age = age;
        this.email = email;
    }
}
1
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 33
27.03.2020, 20:23  [ТС]
iSmokeJC, спасибо вам большое. Там ещё добавляется исключение, а так все работает. Благодарю, почитаю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2020, 20:23
Помогаю со студенческими работами здесь

Рефлексия, получить содержание поля статического класса
static class Messange { public static readonly string mes = "Привет"; } необходимо только по имени...

Рефлексия. Достать методы из класса, которые помечены атрибутом
Допустим имеем такой код : class Test { static public void Method1(){ } static public void Method2(){ } ...

Перегрузка операции + с преобразованием объектов одного класса в объекты другого класса
Доброго времени суток! Изучаю ООП, при выполнении следующего задания возникли сложности: Создать класс Polar для хранения полярных...

Можно ли объявлять в описании одного класса объекты другого класса
Здравствуйте! Помогите, пожалуйста, разобраться: я описал класс SignalZakon, а теперь хочу создать объекты этого класса (k, T1 и Т2) в...

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся массив указателей на базовый абстрактный класс,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru