问题描述
我在Kotlin中搞混了dl4j,并试图构建一个泛型函数。基本上,我想采用以下功能:
fun NeuralNetConfiguration.ListBuilder.dense(init: DenseLayer.Builder.() -> Unit) {
this.layer(DenseLayer.Builder().apply(init).build())
}
fun NeuralNetConfiguration.ListBuilder.conv2d(init: ConvolutionLayer.Builder.() -> Unit) {
this.layer(ConvolutionLayer.Builder().apply(init).build())
}
fun <T> buildLayer(parent: NeuralNetConfiguration.ListBuilder,init: Layer<T>.Builder.() -> Unit) {
parent.layer(Layer<T>.Builder().apply(init).build())
}
此通用函数应采用NeuralNetConfiguration.ListBuilder
对象并应用函数init。在扩展功能中,我想像这样使用buildLayer
:
fun NeuralNetConfiguration.ListBuilder.dense(init: DenseLayer.Builder.() -> Unit) {
buildLayer<DenseLayer>(this,init)
}
fun NeuralNetConfiguration.ListBuilder.conv2d(init: ConvolutionLayer.Builder.() -> Unit) {
buildLayer<ConvolutionLayer>(this,init)
}
不幸的是,我坚持使用正确的通用类型。编译器会引发两个错误:
- 用于签名中的init的构建器:类Builder
!> 的一种类型参数
- 用于正文中的图层:无法创建抽象类的实例
我是Kotlin的新手,而我上一次编写Java的时间太久了。遵循IDE提示使我无处可去。有谁知道如何正确地进行通用键入?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)