在Scala中存储特定类类型的序列吗? [英] Store a sequence of specific class types in Scala?

查看:47
本文介绍了在Scala中存储特定类类型的序列吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图找到一种有效且灵活的方式在Scala中存储一系列类类型,以后我可以用来启动该类型的新实例:

Trying to find a valid and flexible way to store a sequence of class types in Scala that I can later use to spin up new instances of that type:

class Event(

  val name: String,
  val channels: Seq[String],
  val processors: Seq[T] // a sequence of processor classes

)

上面序列中的每个处理器都是Akka演员班。我打算每次通过映射处理器来接收数据时创建一个新的Actor,就像这样:

Each processor in the sequence above is an Akka Actor class. I plan on creating a new Actor every time data is received by mapping out the processors like so:

event.processors.foreach { processorType =>
  val processor = newProcessor(processorType) // does all the Akka creation stuff
  processor ! Data
}

更新:显然,以上说法是正确的,那么我们如何强制 Seq [T] 仅是处理器类型?所以坚持使用 class Calculator这样的类可以扩展处理器

Update: apparently the above is rather correct, so how do we enforce that Seq[T] is processor-types only? So sticking in classes like class Calculator extends Processor

我的猜测是我错过了一些Scala陷阱,因此,感谢您的帮助。

My guess is that there are some gotchas with Scala that I missed, so thanks for your help.

推荐答案

Seq [T] 会仅当存在类型 T 或类型参数时有效。

Seq[T] would only be valid if there is either a type T or a type parameter.

scala> class Event(val seq:Seq[T])
<console>:7: error: not found: type T
       class Event(val seq:Seq[T])
                               ^

要拥有类列表,它必须是Seq [Class [_]]。

To have a list of classes it has to be of a Seq[Class[_]].

假设您提到的处理器的类型为 Processor 。较小的说明性示例:

Let's suppose the processors you mention are of type Processor. A smaller illustrative example:

scala>  trait Processor; class P1 extends Processor; class P2 extends Processor

scala> case class Event(val seq:Seq[Class[_ <: Processor]])
defined class Event

scala> Event(List(classOf[P1],classOf[P2]))
res4: Event = Event(List(class P1, class P2))

scala> res4.seq map { _.newInstance }
res6: Seq[Processor] = List(P1@43655bee, P2@337688d3)

这篇关于在Scala中存储特定类类型的序列吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆