Как автоматически преобразовать значения свойств из строки в Java? - PullRequest
0 голосов
/ 21 июля 2011

Предположим, у меня есть bean-компонент, который имеет много свойств многих типов, таких как int, String, Date и т. Д., Конечно, все примитивные типы. И я хочу заполнить его строковыми представлениями этих значений без написания всего кода синтаксического анализа ... как мне это сделать?

Ответы [ 4 ]

1 голос
/ 22 июля 2011

Из того, что я понимаю по вашему вопросу, у вас есть карта свойств, например:

name: "gotch4"
age: "21"
birthday: "7/21/2011"

и вы хотите создать экземпляр гипотетического объекта Person, который имеет:

String getName()
int getAge()
Date getBirthday()

Apache Commons BeanUtils предоставляет хорошую библиотеку Java для этого. Взгляните на http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/package-summary.html#conversion

1 голос
/ 21 июля 2011

Фреймворки Bean, такие как Spring, сделают это за вас.Но если вы хотите написать это самостоятельно, вам нужно использовать отражение, чтобы найти требуемый тип, а затем использовать правильный код преобразования.

Если у вас есть такой класс:

public class MyBean {
    private int count;

    public void setCount(int count) {
        this.count = count;
    }
}

Итакой контекст приложения:

<beans>
    <bean id="myBean1" class="MyBean">
        <property name="count" value="3"/>
    </bean>
</beans>

Тогда все должно работать нормально.Посмотрите на документы для получения дополнительной информации, хотя примеры лучше, чем документы.

0 голосов
/ 21 июля 2011

Если вы пытаетесь создать экземпляр bean-компонента со значениями из файла свойств (например, Strings), то метод valueOf(String s) - ваш друг.Все классы-обертки примитивного типа (Short, Integer, Long, Float, Double, Boolean, Character, Byte и String) предоставляют статические фабричные методы, называемые valueOfс аргументом String.

Обратите внимание, что Date не является примитивной оболочкой и не попадает в эту категорию.

Если вам интересно, я могу опубликовать код для bean-компонентаЯ написал класс фабрики, который обрабатывает пользовательские аннотации @Property для создания экземпляров компонентов из файлов свойств.

0 голосов
/ 21 июля 2011

Вы можете использовать String.valueOf(). Вы можете передать это любому объекту, который нужно преобразовать, и он сделает все остальное. Обратите внимание, что если какие-либо объекты передаются, им потребуется соответствующий метод toString.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...