最近我正在尝试将 Java 代码片段转换为 Kotlin。我在此代码中有一个特殊需要,即仅在满足某些条件时初始化对象,并且如果不需要初始化它,我不知道如何获得此初始化的副作用(获取空的新文件)。 然而 Kotlin 不允许不进行初始化。 有人有任何想法来解决这个问题吗?谢谢
Java代码
FileOutputStream fos = null;
for (...) {
if (condition met) {
if (fos == null) {
fos = new FileOutputStream(filename);
}
fos.write(something);
}
}
我尝试过的 Kotlin 代码:
var fos: FileOutputStream?;
for (...) {
if (condition met) {
if (fos == null) { // compiler error: not initialized
fos = FileOutputStream(filename);
}
}
fos.write(something)
}
还有这个
var fosCreated: Boolean = false;
var fos: FileOutputStream?;
for (...) {
if (condition met) {
if (!fosCreated) { // compiler error: not initialized
fos = FileOutputStream(filename);
fosCreated = true;
}
fos.write(something)
}
最佳答案
问题在于:
var fos: FileOutputStream?;
...是您没有将其初始化为任何内容。 (Java 会以同样的方式提示未初始化的类型。)
您可以简单地将其初始化为 null:
var fos: FileOutputStream? = null
正如您在评论中发现的那样,您需要确保使用 fos?.write() 而不是 fos.write() 来满足 Kotlin's null safety features 。
关于java - 如何将带有 null 条件检查的 java 代码转换为 Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57085320/