14
¿Por qué es posible anular un método de paréntesis vacío con un object
?Anulando un método con un objeto
trait A {
def meth = {}
def meth_p() = {}
}
class B extends A {
object meth_p
} // compiles
reemplazando el método sin paréntesis no se compila:
class B1 extends A {
object meth
} // does not compile
Ni hacer cualquiera de las siguientes combinaciones de trabajo (sin override
modificador):
class BX extends A {
// of course, each declaration should get its own class
def meth = {}
def meth_p() = {}
def meth() = {}
def meth_p = {}
val meth = {}
val meth_p = {}
// ...
}
Es este comportamiento documentado y útil ? Acabo de encontrarme con un error muy sutil debido a esta anulación accidental.
Sí, esto se ve aún más como un error. – Debilski
https://issues.scala-lang.org/browse/SI-5429 – soc