У меня есть каркас Vaadin и вы хотите переопределить какое-либо поведение.Как изменить личное поле в родительском классе
Проблема в том, что все сеттеры для поля имеют побочные эффекты, которые я не хочу вызывать.
По этой причине я хочу установить личное поле напрямую.
Вот мой код:
@Override
public void setItemDataSource(Item itemDataSource) {
//do some stuff
java.lang.reflect.Field privateField = this.getClass().getDeclaredField(itemDatasource); //Yes the spelling is correct.
privateField.set(this, itemDataSource); <<-- I get an error.
//do more stuff
Я получаю следующее сообщение об ошибке.
// TODO: скопируйте ошибку патча.
По-видимому, я не должен включать this
, так как предмет, который должен быть изменен, но какой-либо другой ссылкой.
Что я делаю неправильно?
Не могли бы вы опубликовать полный след исключения? Я предполагаю, что, несмотря на это, вы не установили модификатор видимости для частного поля, чтобы это разрешить. Тем не менее, я должен сказать, я не поощряю делать что-либо подобное ... (Aw. Assylias избили меня с запасом :)) – ppeterka