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

Generics 使用泛型的类型别名类型的构造函数,generics,kotlin,type-alias,Generics,Kotlin,Type Alias,我现在正在学习Kotlin 但是我在下面的例子中遇到了问题 当我键入一个我自己创建的类alias时,我可以使用如下所示的普通构造函数,但我不能对Kotlin列表类型执行相同的操作。我错过了什么 class Example<T> {} typealias Ex<T> = Example<T> // typealias for example class typealias L<T> = List<T> // typealias for

我现在正在学习Kotlin

但是我在下面的例子中遇到了问题

当我键入一个我自己创建的类alias时,我可以使用如下所示的普通构造函数,但我不能对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
}
类示例{}
typealias Ex=Example//typealias示例类
typealias L=List//Kotlin列表类的typealias
趣味主线(args:Array){
Ex()//好!编译
L(0,{u0->1})//未解析的引用
}

这是因为
列表是一个接口,这意味着没有构造函数。关键字用于现有类型。实际上,
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)

谢谢,我假设它是一个类而不是一个接口。我不知道有可能创建一个看起来像Constructor@TobiahLissens一点也不。很高兴它帮助了你,:)
typealias L<T> = ArrayList<T> 

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