gpt4 book ai didi

java - 为什么我无法访问泛型类型类元素?

转载 作者:行者123 更新时间:2023-12-02 00:56:25 25 4
gpt4 key购买 nike

我在 Kotlin 中创建了一个泛型函数,我想在其中实例化泛型类型。

interface TickerEntity{

val tickers: Array<String>
val fee: Double
val bid : Double
val ask : Double

}

inline fun < reified T : TickerEntity> getStockBuySell() {

val tickerEntity:Class<T> = T::class.java

}

TickerEntity 是一个接口(interface)。我打算实例化实现它的类

上面的函数可以工作,但我无法访问每个类元素。似乎它们的构造函数都没有启动。

我的问题:如何正确实例化上面示例中的接口(interface)?我想访问每个类元素。

最佳答案

要创建它的实例,您可以在 Java 类上调用 newInstance(),前提是它具有零参数构造函数:

inline fun < reified T : TickerEntity> getStockBuySell() {
val tickerEntity : T = T::class.java.newInstance()
// ...
}

如果类没有零参数构造函数,这将会失败。

您可以考虑采用构造函数作为函数的参数。

fun <T : TickerEntity> getStockBuySell(entityConstructor: () -> T) {
val tickerEntity : T = entityConstructor()
// ...
}

// Usage:
getStockBuySell(::MyTickerEntityImplementationClass)

上述用法仍然需要零参数构造函数,但如果您有一些需要参数的特殊实现,则可以通过 lambda 传递它们:

getStockBuySell { MyTickerEntityImplementationClass("someConstructorArgument") }

关于java - 为什么我无法访问泛型类型类元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61313339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com