假设我有这样的事情:
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
}
}
答案 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]