问题标签 [kotlin-null-safety]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

lambda - 为什么这个不可为空的 val 变成“可空的”?

所以我有一个简单的回调类:

现在我想实现一个处理错误的方法。可能有也可能没有callback需要调用的。

这给我一个错误:

引用具有可空类型,((Throwable) -> Unit)?使用显式?.invoke()进行类似函数的调用,而不是

它似乎期待的是

我不太明白为什么。不为空的事实callback是否足以推导出必须有一个非空onError函数?

雪上加霜,如果我写

然后它接受了,但不是在警告我我应该

删除多余的.let调用

0 投票
0 回答
31 浏览

eclipse - Kotlin 的 Eclipse 外部空注释

对于 Java 中的 null 安全性,Eclipse 具有 org.eclipse.jdt.annotations。
此外还有EEA、Eclipse 外部空注释。它们允许您为无法修改代码的库使用 @NonNull/@Nullable 进行注释。

现在,当使用 Kotlin 并与 Java 库进行互操作时,我如何告诉 Kotlin 方法的返回值是否为非 null?
我想为这样的库签名定义一次,而不是每次调用此 API 时。

是否有类似 EEA 的机制,或者我可以让 Kotlin 理解我已经拥有的现有 EEA 文件吗?

问候弗兰克

0 投票
2 回答
2067 浏览

android - 如何在 Kotlin 中声明空数组?

我在 PHP 中有以下代码public static $bitValueTable = null;,我想将其转换为 Kotlin。我的变量在第一步中是一个空数组,但我在程序运行后添加了一些值。我怎样才能转换?

0 投票
2 回答
129 浏览

kotlin - `Nothing` 可以用来做什么?

我特别要求不可为空的类型Nothing

我确实知道这Nothing?允许我们,例如,过滤null以使重载明确,但我正在努力思考Nothing有用的实例。

Nothing?可以只有一个值,null。所以Nothing可以完全没有价值。重点是什么?为什么不简单地使用Unit

0 投票
2 回答
200 浏览

android - Kotlin 安全调用 (?.) 实现

我可以用繁琐的方法解决它,所以如果您不发布解决方法而是记录解决方案,我将不胜感激。

我正在尝试将以下代码片段添加到onCreateView()片段中,但是“感谢”安全调用(或我的代码设计)事情变得复杂了。在Kotlin 部分之后显示警告以在(相当于Java 中)之后TabLayoutMediator(activity添加安全调用 ( ) ,这可能是.?.activitygetActivitynull

尝试任何解决方案之前的原始代码片段

1)试图通过添加来解决safe call(失败)

现在添加安全调用违背了TabLayoutMediator输入参数,我收到type mismatch Required:TabLayout Found:TabLayout?警告TabLayoutMediator

2)尝试通过之前的空检查来解决safe call(失败)

添加空检查,但现在 Kotlin 给出了TabLayoutMediator(activity部分警告Smart cast to 'FragmentActivity' is impossible, because 'activity' is a property that has open or custom gette

0 投票
1 回答
634 浏览

kotlin - Kotlin - 检查参数是否为空的通用方法

我正在使用Kotlin并考虑编写通用方法来检查是否有任何传递的参数是not null.

方法可以在if语句中使用,而不是手动检查每个参数。如果参数不为空,那么编译器应该假设if它们仍然是内部语句not null。下面的例子:

这是“传统”方式:

这就是我想做的:

当然上面的代码不是编译(Type mismatch, Required: Foo, Found: Foo?)。

有什么方法可以确保编译器foo已经bar检查过null吗?我可以!!在每个参数中使用,但这不是非常优雅的解决方案。也许一些建筑使用contract

使用手动检查时foo != null && bar != null没有问题,因为自动smart castFooBar

0 投票
1 回答
373 浏览

kotlin - Reactor 和 kotlin 的空安全性

根据这部分文档,Reactor 应该支持 null-safety: https ://projectreactor.io/docs/core/release/reference/#kotlin-null-safety

尽管如此,使用map我可以轻松地跳过空值检查:

如本例所示,String?分配给Mono<String>. 在这种情况下收到编译器故障会很棒。它是反应堆中的错误还是从未实施过的东西?

我正在使用:反应堆 3.2.12

0 投票
2 回答
85 浏览

kotlin - 如何分解对象并将其简洁地添加到列表中?

如果我有一堂课,例如

是否有更类似于 Kotlin 的方式来实现以下目标?

0 投票
2 回答
62 浏览

kotlin - 我可以将检查 null 的时间更改为不同的方法吗?

在 Kotlin 中是否有更“Kotlin”的方式来执行以下操作?

我怀疑在 Kotlin 中检查nullwithwhen可以用不同的方式编写

0 投票
1 回答
78 浏览

kotlin - 检查空值后显示空值安全错误

我执行一个函数 ( listOf(matchUid, first_name, gender, matchBio, age).any { it == null }) 检查传入的任何变量是否为null

即使它检查了这一点,first_name并且gender由于 null 安全性,编译器也有红色下划线。matchUid没有红线,因为我在下面的行中明确检查了 null。

为什么我已经检查过编译器仍然给出空警告?