import swing._
object PeerTest extends SimpleSwingApplication {
def top = new MainFrame {
val p = peer.getMousePosition
}
}
error: ambiguous reference to overloaded definition,
both method getMousePosition in class Container of type (x$1: Boolean)java.awt.Point
and method getMousePosition in class Component of type()java.awt.Point
match expected type ?
val p = peer.getMousePosition
,但增加的類型
val p: Point = peer.getMousePosition
使得確定。爲什麼?
編輯:導致問題:
class A {
def value() = 123
}
class B extends A {
def value(b: Boolean) = 42
}
object Main extends App {
println ((new B).value)
}
不會造成問題:
class A {
def value() = 123
def value(b: Boolean) = 42
}
class B extends A {}
object Main extends App {
println ((new B).value)
}
所以我想答案必須解釋爲什麼只有當這些方法在不同的班級出現。
因此,如果我們決定向類中添加重載方法,我們可以打破人的代碼......這看起來不太好。我認爲在方法之後加上'_'是使它成爲部分應用函數的方法。 –
@Luigi有很多方法通過添加重載來打破人們的代碼,這只是一種方法。 –
http://stackoverflow.com/questions/2510108/why-avoid-method-overloading – retronym