如何更改父类中的私有字段



我已经使用了Vaadin框架,想要覆盖一些行为。

问题是一个字段的所有setter都有我不想调用的副作用。

因此我想直接设置private字段

下面是我的代码:

@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

我得到以下错误:

//复制粘贴错误。

显然,我不应该包括this作为需要更改字段的对象,而是一些其他引用。
我做错了什么?

您需要首先使其可访问:

privateField.setAccessible(true);
privateField.set(this, itemDataSource);

相关内容

  • 没有找到相关文章

最新更新