2013-03-08 50 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 2013-03-08 11:52:48

回答