Sonar 提示以下行:
@UiField
Button saveBtn;
Variable 'saveBtn' must be private and have accessor methods.
然而,当我将可见性修饰符设置为 private
时,IntelliJ IDEA 会提示:
@UiField 'saveBtn' should not be' private'
关于此冲突的最佳解决方案是什么(除了禁用此 Sonar 警告之外)?
最佳答案
GWT 的代码生成要求@UiFields
不是私有(private)的。在编译期间运行的 UIBinder 代码生成器将为您创建大量动态添加到您的项目中的 Java 代码。
此代码将直接访问字段并将小部件绑定(bind)到您的变量。此生成的代码未使用任何访问器,并且没有允许这样做的选项。 (实际上,这是完全有道理的,因为它掩盖了这些变量实际上已设置并使注释的语义清晰的事实)。
这就是要求背后的基本原理,即这些字段不允许是私有(private)的。因此,没有办法解决这个问题,只能禁用该类的 Sonar 警告。
关于java - 如何将@UiField 字段设为私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29566490/