动态设置函数文字的参数类型

时间:2014-08-15 13:23:51

标签: scala

假设我有这样的事情:

abstract class MyContainer[E]

abstract class MyClass[T] {
  def myFunction: Unit = {
    (myParam: MyContainer[T]) => Empty
  }
}

现在假设我为这些创建实现:

class StringContainer[String] extends MyContainer[String]

class StringClass extends MyClass[String] 

有没有办法动态修改myParameter的类型。 没有覆盖myFunction,以便myFunction在运行时有效地以下列方式运行?

abstract class StringClass[String] {
  def myFunction: Unit = {
    (myParam: StringContainer) => Empty
  }
}

1 个答案:

答案 0 :(得分:2)

发布此问题后不久,我意识到我完全误解了Scala中对泛型的正确使用。我在这里发布了一个工作示例,只是为了其他可能遇到同样错误的人的利益:

abstract class MyContainer[E]

abstract class MyClass[T, C <: MyContainer[T]] {
  def myFunction: Unit = {
    (myParam: C) => Empty
  }
}

然后简单地说:

class StringContainer[String] extends MyContainer[String]

class StringClass extends MyClass[String, StringContainer]