[英]Kotlin: constructor reference for a parameterized type gives a compilation error
[英]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.