我看到了这个问题:Scala: public static final in a class也是这个问题:http://www.scala-lang.org/old/node/9178但是我无法让它发挥作用......
我想要做的是以下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和SERVICES不应该等同于Java MyClass.WSDL访问?
感谢任何解决方案,以及任何解释让我更易消化...
答案 0 :(得分:4)
Scala没有static
。你做的是将你在Java中的所有内容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("..."))
}
放在该类的伴随对象中。
这就是你的代码应该是这样的:
{{1}}