我们正在使用 @Command 方法来触发任何方法,但是我们正在使用 @NotifyChange 方法来反射(reflect)类变量。
但是我们使用 @NotifyChange 代替

BindUtils.postNotifyChange(null, null, this.class, "*");

因此,哪种陈述有利于提高性能。

最佳答案

实际上,BindUtils@NotifyChanged更强大
如果您将以相同的方式使用它,我认为不会有太大的性能差异。
唯一的不同是@NotifyChange仅适用于 setter 和命令,并且可以从每种方法中调用BindUtils

现在,什么时候会有区别?
假设您有一个 list ,您可以从中得到什么:

public List<User> getUsers() {
    return users;
}

假设我们在每个用户旁边都有按钮,并且该按钮会触发更改该用户的命令(例如阻止该用户)
我们可以做的是将@notifyChanged("users")放在zk中询问getUsers();意味着什么

如果我们使用BindUtils,则可以执行以下操作:
BindUtils.postNotifyChanged(null,null,user,"*");

或者
BindUtils.postNotifyCHanged(null,null,user,"blocked");

即使我们在VM中没有该用户的 setter/getter ,该 setter/getter 仍然会执行,并且只有整个列表中的该用户会更新。
使用第一个命令将刷新所有数据,第二个命令将仅更新已阻止的数据。
现在,第二个并非总是可能的,因为您可能不知道要更新哪个字段或所有字段,但是仍然要更新1个用户而不是获取所有x个用户。

08-28 23:57