android – 具有合成绑定和可空性的Kotlin视图

android – 具有合成绑定和可空性的Kotlin视图,第1张

概述我注意到当使用Kotlin的合成绑定时,返回的视图为非null(Kotlin将返回View!).但这对我来说没有多大意义,因为findCachedViewById实际上可以返回null结果,这意味着视图实际上可以为null. public View _$_findCachedViewById(int var1) { if(this._$_findViewCache == null) { 我注意到当使用Kotlin的合成绑定时,返回的视图为非null(Kotlin将返回VIEw!).但这对我来说没有多大意义,因为findCachedVIEwByID实际上可以返回null结果,这意味着视图实际上可以为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不回归VIEw?当使用合成绑定时,开发人员在处理视图时会被迫检查是否为空;

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

那么在这种情况下,做下面的代码是否有意义?

vIEw?.let {    // handle non null vIEw here}
解决方法 我想通了,我发帖后总能找到正确的SO问题:)

VIEw之后的单个感叹号实际上并不意味着视图不能像我预期的那样为null.

这answer到另一个问题基本上回答了我的确切问题.使用合成绑定时,VIEw实际上可以为null,但我们无法确定,因此是单个感叹号.

所以可以安全地假设我上面发布的代码 – 使用?.let {…}是完全可以接受的方式来处理视图,当你不确定它们是否已经在访问它们时已经初始化.

视图可能为null的情况非常罕见,但可能会发生.

总结

以上是内存溢出为你收集整理的android – 具有合成绑定和可空性的Kotlin视图全部内容,希望文章能够帮你解决android – 具有合成绑定和可空性的Kotlin视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存