Joh*_*ica 4 java reflection private
我使用Vaadin框架并希望覆盖某些行为.
问题是一个字段的所有setter都有我不想调用的副作用.
出于这个原因,我想直接设置私有字段.
这是我的代码:
@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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
// TODO:复制粘贴错误.
显然我不应该包括this作为需要更改字段的对象,而是其他一些参考.
我究竟做错了什么?
您需要先访问它:
privateField.setAccessible(true);
privateField.set(this, itemDataSource);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |