在Kotlin中使用延迟初始化和通用工厂方法进行推理
我有一个工厂方法,产生一些列表:
inline fun getObject(fileName: String): List
工厂方法应该用于这样的延迟初始化:
val points: List by lazy { ObjectFactory.getObject(pointsFileName) }
现在,Kotlin编译器显然没有足够的lambda内的types信息和抱怨:
Type inference failed: Not enough information to infer parameter T in inline fun getObject(fileName: String): List Please specify it explicitly.
编译器不考虑延迟初始化的结果将被分配的types。 我可以通过在本地提供types来解决这个问题,但这并不美观:
val points by lazy { val pointsToCommunicateType: List = ObjectFactory.getObject(pointsFileName) pointsToCommunicateType }
什么是正确的方法来做到这一点?
你可以像这样指定types:
ObjectFactory.getObject(pointsFileName)