簡體   English   中英

如何將具有空條件檢查的Java代碼轉換為Kotlin

[英]How to convert this java code with null condition check into Kotlin

最近,我正在嘗試將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的null安全功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM