所以在伪代码中是这样的。
class Example {
private ExampleState state;
private List<ExampleState> states;
public Example() {
state = new ExampleState(parameters);
CustomAdapter = new CustomAdapter(context, state);
}
public someMethod() {
state = states.get(states.size() - 1);
cellAdapter.notifyDataSetChanged();
}
}
class CustomAdapter {
protected ExampleState state; // that's where data is
public CustomAdapter(Context context, ExampleState state) {
this.state = state;
}
}
在 someMethod 之后,CustomAdapter 状态字段保持不变。正如我所想的那样,起初我在 Example 构造函数中创建对象 ExampleState 。然后我将对它的引用传递给适配器。然后我将对象更改为引用另一个对象。
所以在 someMethod 之前,Example 和 CustomAdapter 中字段“state”的 id 是相同的。之后,示例中的一个是新的,而 CustomAdapter 中的一个是旧的。为什么参考没有更新?