Scala 动态设置函数文本的参数类型
假设我有这样的东西:Scala 动态设置函数文本的参数类型,scala,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 My
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
}
}
发布这个问题后不久,我意识到我完全误解了在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]