使用Scala中具有变量类型的类型参数实例化类

pvo*_*orb 1 scala type-parameter

我有以下类型

class Translator[To <: Language] { ... }
abstract class Language
object English extends Language
object German extends Language
Run Code Online (Sandbox Code Playgroud)

有没有办法Translatorval类型EnglishGerman?的实例化?

我正在寻找类似以下内容(这不起作用):

val lang = if (someCondition) English else German
val translator = new Translator[classOf[lang]]
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 5

问题是,无论English或者German是类.你确定你需要通用性吗?也许成分就足够了.可能的解决方案是:

val lang = Translator(if (someCondition) English else German)
Run Code Online (Sandbox Code Playgroud)

使用以下类和对象:

case class Translator(l: Language)
trait Language
object English extends Language
object German extends Language
Run Code Online (Sandbox Code Playgroud)

但它与你期望的设计完全不同......