gpt4 book ai didi

scala - 从 Class[T] 映射到 T,无需转换

转载 作者:行者123 更新时间:2023-12-03 04:49:36 25 4
gpt4 key购买 nike

我想按照以下代码从类标记映射到实例:

trait Instances {
def put[T](key: Class[T], value: T)
def get[T](key: Class[T]): T
}

是否可以在不必解析 get 方法中的强制转换的情况下完成此操作?

更新:

对于更一般的情况,如何使用 Foo[T] 而不是 Class[T] 来完成此操作?

最佳答案

您可以尝试从 map 中以 Any 形式检索对象,然后使用 Class[T] 进行“反射式转换”:

trait Instances {                                        
private val map = collection.mutable.Map[Class[_], Any]()
def put[T](key: Class[T], value: T) { map += (key -> value) }
def get[T](key: Class[T]): T = key.cast(map(key))
}

关于scala - 从 Class[T] 映射到 T,无需转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7401329/

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