scala中的类到实例多重映射
将scala中的类到实例多重映射,scala,collections,multimap,Scala,Collections,Multimap,将Class[T]s与List[T]s关联的惯用方法是什么?本质上,我想要的是番石榴的等价物,但要以多重映射的形式 我不确定Scala如何适应这里。标准库中没有任何内容,但实现起来非常简单(使用ClassTags而不是Class来简化API): 如果要分别存储具有相同类和不同泛型类型参数(例如Option[Int]和Option[String])的实例,请使用TypeTags而不是ClassTags。标准库中没有任何内容,但实现起来非常简单(使用ClassTags而不是Class稍微简化API)
Class[T]
s与List[T]
s关联的惯用方法是什么?本质上,我想要的是番石榴的等价物,但要以多重映射的形式
我不确定Scala如何适应这里。标准库中没有任何内容,但实现起来非常简单(使用
ClassTag
s而不是Class
来简化API):
如果要分别存储具有相同类和不同泛型类型参数(例如
Option[Int]
和Option[String]
)的实例,请使用TypeTag
s而不是ClassTag
s。标准库中没有任何内容,但实现起来非常简单(使用ClassTag
s而不是Class
稍微简化API):
如果要分别存储具有相同类和不同泛型类型参数(例如
Option[Int]
和Option[String]
)的实例,请使用TypeTag
s而不是ClassTag
s。标准库中没有任何内容,但实现起来非常简单(使用ClassTag
s而不是Class
稍微简化API):
如果要分别存储具有相同类和不同泛型类型参数(例如
Option[Int]
和Option[String]
)的实例,请使用TypeTag
s而不是ClassTag
s。标准库中没有任何内容,但实现起来非常简单(使用ClassTag
s而不是Class
稍微简化API):
如果要分别存储具有相同类和不同泛型类型参数(例如Option[Int]
和Option[String]
)的实例,请使用TypeTag
s而不是ClassTag
s
class ClassToInstanceMultiMap private (private val delegate: Map[ClassTag[_], List[_]]) {
def addInstance[T](x: T)(implicit ct: ClassTag[T]) =
new ClassToInstanceMultiMap(delegate + (ct -> x))
def getInstances[T](implicit ct: ClassTag[T]) = delegate.getOrElse(ct, List.empty).asInstanceOf[List[T]]
// whatever other methods you want
}
object ClassToInstanceMultiMap {
val empty = new ClassToInstanceMultiMap()
}
// usage
val cimm = ClassToInstanceMultiMap.empty.addInstance(1).addInstance(2).addInstance("a").getInstances[Int]
// returns List(1, 2)