[英]How to convert this java code with null condition check into Kotlin
最近,我正在嘗試將Java代碼段轉換為Kotlin。 我在此代碼中有一個特殊需要,即僅在滿足某些條件時才初始化對象,並且如果不需要初始化該對象,我不會得到這種初始化的副作用(獲取一個空的新文件)。 但是Kotlin不允許不進行初始化。 有人有解決這個問題的想法嗎? 謝謝
FileOutputStream fos = null;
for (...) {
if (condition met) {
if (fos == null) {
fos = new FileOutputStream(filename);
}
fos.write(something);
}
}
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的null安全功能 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.