【发布时间】:2016-02-26 23:52:26
【问题描述】:
如何使这段代码工作?
据我所知,Scala 没有动态调度(类似于 Java)。是否可以以某种方式模拟动态调度?
或者最好的解决方案是什么?
object Tezt {
case class SuperClazz()
case class SubClazz1() extends SuperClazz
case class SubClazz2() extends SuperClazz
def method(obj: SubClazz1) = {
// stuff
}
def method(obj: SubClazz2) = {
// stuff
}
def func[T <: SuperClazz](obj: T) = {
Tezt.method(obj) // Error: Cannot resolve method reference with such signature
}
}
【问题讨论】:
-
java 也不允许这样做。您的代码完全错误。试着用文字解释你想要做什么。
-
我说Java也没有。我有一个接收对象的函数,它是
SuperClazz的子类,并且有 2 个方法,每个子类都有 onde。我怎么知道要找到哪个? -
假设,这是允许的。如果你传入一个 Subclazz3 的实例,然后呢?
标签: scala types type-inference dynamic-dispatch multiple-dispatch