gpt4 book ai didi

generics - 使用泛型的类型别名类型的构造函数

转载 作者:行者123 更新时间:2023-12-02 12:48:34 27 4
gpt4 key购买 nike

我现在正在学习 Kotlin。

但是我在下面的例子中遇到了麻烦。

当我键入我自己创建的类的别名时,我可以使用如下所示的普通构造函数,但我不能对 Kotlin 列表类型做同样的事情。我在这里想念什么?

class Example<T> {}

typealias Ex<T> = Example<T> // typealias for example class
typealias L<T> = List<T> // typealias for Kotlin list class

fun main(args: Array<String>) {
Ex<Int>() // OK! compiles
L<Int>(0,{ _ -> 1}) // unresolved reference
}

最佳答案

这是因为 List<T>是一个接口(interface),这意味着没有构造函数。和 typealias关键字用于现有类型。事实上,List(size,init)被定义为 stdlib 中的顶级扩展函数如下:

//             v--- List(size){...} is a function rather than a type
inline fun <T> List(size:Int, init: (index: Int)->T):List<T>=MutableList(size,init)

中频您更改别名 L混凝土 类(class) ArrayList ,你发现你也可以使用它的构造函数来创建它,例如:
typealias L<T> = ArrayList<T> 

fun main(args: Array<String>) {
// v--- create `L<Int>` by its constructor
L<Int>(1)
}

关于generics - 使用泛型的类型别名类型的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45512852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com