簡體   English   中英

如何在 Kotlin 中引用參數化構造函數?

[英]How to reference parameterized constructor in Kotlin?

所以我有這個定義:

    sealed interface ParseResult<out R> {
        data class Success<R>(val value: R) : ParseResult<R>
        data class Failure(val original: String, val error: Throwable) : ParseResult<Nothing>
    }

我想將某些元素包裝在 Success 中。 我知道我可以這樣做......

    list.map{ParseResult.Success(it)}

但是有沒有辦法使用構造函數引用?

   list.map(ParseResult::Success) //this won't compile

如果添加import ,則可以使用構造函數引用:

import somepackage.ParseResult.Success

甚至是類型別名:

typealias Success<R> = ParseResult.Success<R>

然后你可以這樣做:

list.map(::Success)

這里的想法是讓ParseResult.Success可以通過一個簡單的名稱來引用。

不過,無法執行ParseResult::Success對我來說確實是個錯誤。 相比:

class Outer {
    class Nested
}
class OuterGeneric<T> {
    class Nested
}

fun main() {
    val x = Outer::Nested // works
    val y = OuterGeneric::Nested // error
}

暫無
暫無

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

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