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作为需要更改字段的对象,而是包含其他一些参考。
我究竟做错了什么?

4

1 回答 1

9

您需要先使其可访问

privateField.setAccessible(true);
privateField.set(this, itemDataSource);
于 2013-03-08T11:51:17.003 回答