2013-03-08 5 views
4

У меня есть каркас 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, так как предмет, который должен быть изменен, но какой-либо другой ссылкой.
Что я делаю неправильно?

+0

Не могли бы вы опубликовать полный след исключения? Я предполагаю, что, несмотря на это, вы не установили модификатор видимости для частного поля, чтобы это разрешить. Тем не менее, я должен сказать, я не поощряю делать что-либо подобное ... (Aw. Assylias избили меня с запасом :)) – ppeterka

ответ

Смежные вопросы