Существующая поддержка Javabean для изменения неизменяемых свойств - PullRequest
5 голосов
/ 03 февраля 2011

Кто-нибудь знает о какой-либо существующей поддержке для изменения отдельных свойств неизменяемых объектов, хранящихся в JavaBean-совместимом объекте?

Для тривиального примера:

Для данного класса неизменяемого значения и объекта бина (не беспокоятся об этом слушателей):

public class ValueObject {
    private final int value;

    public ValueObject(int value) {
        this.value = value;
    }

    public ValueObject withValue(int newValue) {
        return new ValueObject(value);
    }
}

public class Bean {

    private ValueObject value;

    public ValueObject getValue() {
        return value;
    }

    public ValueObject setValue(ValueObject value) {
        this.value = value;
    }
}

Уже можно просматривать недвижимость как bean.value.value.

Я смотрю, есть ли существующий способ сказать bean.value.value = 3 и, в принципе, есть вызов, эквивалентный bean.setValue(bean.getValue().withValue(3));.

Обратите внимание, что объект фактического значения значительно сложнее.

Спасибо!

1 Ответ

1 голос
/ 26 февраля 2011

Я бы попытался создать класс BeanInfo для класса bean, который определяет метод мутатора свойства, используя setWriteMethod. Этот метод записи может принять примитивное значение типа int и создать из него объект неизменяемого значения и присвоить его полю свойства.

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