如何在 Scala 构造函数中使用"static final constant"?



我看到了这个问题:Scala:班级公共静态决赛,也是如此:http://www.scala-lang.org/olg/old/old/node/9178,但我可以't使它起作用...

我想做的是等同于以下Java代码的Scala:

public class MyClass extends AnotherClass{
  public static final String WSDL = MyConfig.getProp("...");
  public static final String SERVICES = {new QName(MyConfig.getProp("..."))};
  public MyClass(){
    super(WSDL,SERVICES);
  }
}

我根据我搜索的内容尝试的是:

class MyClass (wsdl: String, services: Array[QName])(implicit val config:MyConfigClass) extends AnotherClass(wsdl,services:_*){
  val WSDL:String = config.getProp("...")
  val SERVICES: Array[QName] = Array(new QName(config.getProp("...")))
  def this() {
    this(WSDL,SERVICES:_*)
  }
}

但是Scala Ide告诉我WSDL,服务未知。此时宣布WSDL和服务不应该是Java myClass.wsdl访问的等效内容?

感谢您的任何解决方案,并提供任何使我更易于消化的解释...

scala没有static。相反,您要做的就是将您要在Java中制作static的所有内容,在班级的同伴中。

这是您的代码应该的样子:

class MyClass (wsdl: String, services: Array[QName])
    extends AnotherClass(wsdl, services: _*) {
  def this() {
    this(MyClass.WSDL, MyClass.SERVICES)
  }
}
object MyClass {
  final val WSDL: String = "..."
  final val SERVICES: Array[QName] = Array(new QName("..."))
}