声纳抱怨以下行:

@UiField
Button saveBtn;



  变量“ saveBtn”必须是私有的,并且具有访问器方法。


但是,当我将可见性修改器设置为private时,IntelliJ IDEA会抱怨:


  @UiField'saveBtn'不应该是'private'


关于此冲突的最佳解决方案是什么(除了禁用此声纳警告)?

最佳答案

GWT的代码生成要求@UiFields不是私有的。在编译期间运行的UIBinder代码生成器将为您创建很多Java代码,这些Java代码会动态添加到您的项目中。

此代码将直接访问字段并将小部件绑定到您的变量。生成的代码未使用任何访问器,没有选项允许这样做。 (实际上,这掩盖了事实,这些变量实际上是已设置的,并且使注释的语义清晰可见,这是很有意义的)。

这就是要求这些字段不允许为私有字段的理由。因此,除了禁用该类的声纳警告外,别无选择。

关于java - 如何将@UiField字段设为私有(private),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29566490/

10-12 13:07