【发布时间】:2017-10-30 14:54:45
【问题描述】:
我编写了以下代码,但它不起作用,因为我收到 unresolved reference 错误。
class Chromosome {
constructor() {}
companion object {
fun newInstance(): Chromosome {
return Chromosome()
}
}
}
class Population<T>(size: Int) where T: Chromosome {
var population: Array<T> = Array(size, { _ -> T.newInstance() })
}
我想要一个泛型类型 T 来扩展某个类或接口。我需要调用静态工厂方法,因为我无法在 Array 类构造函数中编写 T()。有什么方法可以包装 Array 类调用默认构造函数?
我尝试了另一种方法,但仍然无法正常工作。这次我得到一个 Cannot use 'T' as reified type parameter。改用类错误。
class Population<T>(size: Int, init: () -> T) where T: Chromosome {
var population: Array<T> = Array(size, { _ -> init() })
}
【问题讨论】:
-
我认为
ClassY是Class Y。对吗? -
这在 Java 中和在 Kotlin 中一样有问题。您将如何在 Java 中完全实现这一点?
-
@tynn 好问题。我试图用Java实现,但它也不起作用。因此,当您说这在两种语言中都有问题时,您是对的。