powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Reflection set method
3 сообщений из 3, страница 1 из 1
Reflection set method
    #39308206
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правильно и лучше заполнить bean через рефлексию

Через Statement
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            for (int i = 0; i < array.length; i++) {
                try {
                    Field field = declaredFields[i];
                    StringBuilder fieldName = new StringBuilder(field.getName().substring(0, 1).toUpperCase())
                            .append(field
                                    .getName().substring(1));
                    Statement stmt = new Statement(entity, "set" + fieldName, new Object[] { array[i] });
                    stmt.execute();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }



Через BeanInfo
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    public void setPropertyValue(Object javaBean, String propertyName, Object propertyValue) {
        try {
            BeanInfo bi = Introspector.getBeanInfo(javaBean.getClass());
            PropertyDescriptor pds[] = bi.getPropertyDescriptors();
            for (PropertyDescriptor pd : pds) {
                if (pd.getName().equals(propertyName)) {
                    Method setter = pd.getWriteMethod();
                    if (setter != null) {
                        setter.invoke(javaBean, new Object[] { propertyValue });
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }



Через method
Код: java
1.
2.
3.
4.
5.
6.
try {             
   Method method = enity.getClass().getMethod("set" + fieldName, new Class[] {"value"});               
   method.invoke(myObj, value);
} catch (Exception ex) {
   ex.printStackTrace();
}
...
Рейтинг: 0 / 0
Reflection set method
    #39308220
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Через Statement

Это откуда такое?

-=Koba=-
Код: java
1.
2.
3.
                    StringBuilder fieldName = new StringBuilder(field.getName().substring(0, 1).toUpperCase())
                            .append(field
                                    .getName().substring(1));



Такие вещи надо выносить в методы с внятными именами.

Кстати, "поле" и "свойство" это не одно и то же. Ваш код почему-то ожидает что их имена совпадают.

И можете добавить в копилку:

Apache Commons BeanUtils
http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanutils/package-summary.html#standard.basic

Guava Reflection
http://google.github.io/guava/releases/snapshot/api/docs/com/google/common/reflect/Invokable.html

Spring
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/BeanUtils.html
...
Рейтинг: 0 / 0
Reflection set method
    #39308230
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКстати, "поле" и "свойство" это не одно и то же. Ваш код почему-то ожидает что их имена совпадают.


Да есть такое, так получилось, что расположение объектов в массиве совпадает с расположением полей в бине
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Reflection set method
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]