如何解决Kotlin中dl4j的通用功能
我在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 举报,一经查实,本站将立刻删除。