我目前正在为一个库编写一个 DSL,我想使用这样的具体类型参数来提供类型元数据:
val config = Config.create()
.consumerFor<MyType>{
// consume
}
我的问题是我只能在函数中使用reified
关键字,inline
而在inline
函数中我不能使用这样的实例字段:
inline fun <reified T> consumerFor(consumer: (T) -> Unit) {
consumers.put(T::class.java, consumer)
return this
}
因为我收到一个错误:
公共 API 内联函数无法访问非公共 API 'private final val consumer...
到目前为止,我似乎无法在最有用的地方使用具体类型参数。有解决方法吗?