Java中的boolean(primitive)和Boolean(primitive wrapper)的默认值是什么?
我正在尝试消除我的Android应用程序的所有警告,其中之一就是:
viewModel.value是一个盒装字段,但需要取消装箱才能执行android:checked.这可能会导致NPE,因此数据绑定将安全地取消它.您可以更改表达式并使用safeUnbox()显式包装viewModel.value以防止出现警告
其中value是ObservableField来自超类的泛型:
public abstract class BaseDataTypeViewModel<T> extends BaseObservable {
public final ObservableField<T> value = new ObservableField<>();
...
}
Run Code Online (Sandbox Code Playgroud)
并在某处作为一个扩展Boolean:
public class CheckBooleanDataTypeViewModel extends BaseDataTypeViewModel<Boolean> {
...
}
Run Code Online (Sandbox Code Playgroud)
我看到数据绑定 - safeUnbox警告发生警告,因为这是一个Boolean而不是一个boolean,所以我试图添加这个:android:checked="@={safeUnbox(viewModel.value)}"而不是android:checked="@={viewModel.value}"然后我得到一个错误说我无法反转safeUnbox()方法.
****/数据绑定错误****msg:表达式android.databinding.DynamicUtil.safeUnbox(viewModelValue)无法反转:方法safeUnbox没有反转,必须在方法中添加@InverseMethod注释才能指示在双向绑定表达式中使用它时应该使用哪个方法
我正确地理解了2个分离的问题,但是我必须忍受警告以避免错误,或者他们是避免警告和错误的解决方案吗?这@InverseMethod是怎么回事?我没有设法添加这个注释,因为该方法来自android包.