繁体   English   中英

Kotlin中具有延迟初始化和通用工厂方法的类型推断

[英]Type inference with lazy initialization and generic factory method in Kotlin

我有一个工厂方法,它产生<T>一些列表:

inline fun <reified T> getObject(fileName: String): List<T>

应该将工厂方法用于延迟初始化,如下所示:

val points: List<Point> by lazy {
    ObjectFactory.getObject(pointsFileName)
}

现在Kotlin编译器显然在lambda内部没有足够的类型信息,并抱怨:

Type inference failed:
Not enough information to infer parameter T in
inline fun <reified T> getObject(fileName: String): List<T>
Please specify it explicitly.

编译器没有考虑将惰性初始化的结果分配给的类型。 我可以通过在本地提供类型来解决此问题,但这不是很漂亮:

val points by lazy {
    val pointsToCommunicateType: List<Point> =
            ObjectFactory.getObject(pointsFileName)
    pointsToCommunicateType
}

什么是正确的方法?

您可以这样指定类型:

ObjectFactory.getObject<Point>(pointsFileName)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM