我正在学习Kotlin。
但是我遇到了以下示例的问题。
当我输入别名我自己创建的类时,我可以使用正常的构造函数,如下所示,但我不能对Kotlin列表类型做同样的事情。我在这里错过了什么?
position: relative
答案 0 :(得分:2)
这是因为List<T>
是一个接口,这意味着没有构造函数。 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)
IF 您将别名L
更改为具体类ArrayList
,您发现您也可以使用其构造函数创建它,例如:
typealias L<T> = ArrayList<T>
fun main(args: Array<String>) {
// v--- create `L<Int>` by its constructor
L<Int>(1)
}