我不记得我怎么能把super调用到具有final和super class相同构造函数的超类
这是我的代码
class RestConnector(connectorProperties: Properties) extends BaseSyncConnector(connectorProperties) {
def this(connectorProperties: Properties){
this(connectorProperties)
//Logic
}
但它告诉我
Error:(22, 5) ambiguous reference to overloaded definition,
both constructor RestConnector in class RestConnector of type (connectorProperties: java.util.Properties)RestConnector
and constructor RestConnector in class RestConnector of type (connectorProperties: java.util.Properties)RestConnector
match argument types (java.util.Properties)
this(connectorProperties)
Error:(21, 7) constructor RestConnector is defined twice
conflicting symbols both originated in file 'RestConnector.scala'
def this(connectorProperties: Properties){
有什么想法吗?
答案 0 :(得分:4)
歧义是由类RestConnector
的两个构造函数的定义引起的:
class RestConnector(connectorProperties: Properties)
def this(connectorProperties: Properties)
这个问题是编译器不知道选择哪个构造函数。
此外,您不需要将调用添加到super,因为此代码已调用super:... extends BaseSyncConnector(connectorProperties)
这是一个例子:
scala> class A (b: String) { println(s"b : $b") }
defined class A
scala> class C(bb: String) extends A(bb) // <- call to super constructor (`A(bb)`)
defined class C
scala> new C("hello")
b : hello // <- you can see here that A's constructor is called
res0: C = C@7e2f86e6
所以,你能做的是:
class RestConnector(connectorProperties: Properties) extends BaseSyncConnector(connectorProperties) {
// put the logic here
}