gpt4 book ai didi

android - 具有合成绑定(bind)和可空性的 Kotlin View

转载 作者:IT老高 更新时间:2023-10-28 13:47:20 24 4
gpt4 key购买 nike

我注意到当使用 Kotlin 的合成绑定(bind)时,返回的 View 是非空的(Kotlin 将返回 View!)。但这对我来说没有多大意义,因为 findCachedViewById 实际上可以返回 null 结果,这意味着 View 实际上可以为 null。

public View _$_findCachedViewById(int var1) {
if(this._$_findViewCache == null) {
this._$_findViewCache = new HashMap();
}

View var2 = (View)this._$_findViewCache.get(Integer.valueOf(var1));
if(var2 == null) {
View var10000 = this.getView();
if(var10000 == null) {
return null;
}

var2 = var10000.findViewById(var1);
this._$_findViewCache.put(Integer.valueOf(var1), var2);
}

return var2;
}

那么为什么在这种情况下它们不是可选的呢?为什么 Kotlin 在使用合成绑定(bind)时不简单地返回 View?,这样开发人员在处理 View 时会被迫检查可空性?

也许只是因为我是 Kotlin 的新手,但我认为这有点违反直觉,因为变量不是可选的,但我们仍然应该检查 View 是否实际上不为 null。

那么在这种情况下,像下面的代码那样做有意义吗?

view?.let {
// handle non null view here
}

最佳答案

我想通了,我总是在发布我的问题后立即找到正确的 SO 问题:)

View 后面的单个感叹号实际上并不意味着 View 不能像我预期的那样为空。

这个 answer另一个问题基本上回答了我的确切问题。 View,当使用合成绑定(bind)时,实际上可以为空,但我们无法确定,因此只有一个感叹号。

因此可以安全地假设我在上面发布的代码 - 当您不确定它们是否已经被初始化时,使用 ?.let{...} 是完全可以接受的处理 View 的方式访问它们。

View 可能为 null 的情况非常罕见,但这种情况可能会发生。

关于android - 具有合成绑定(bind)和可空性的 Kotlin View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49276783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com