jkl*_*jkl 9 constructor scala default-parameters scala-java-interop
我在构造函数上使用Scala 2.8默认参数,出于Java兼容性原因,我想要一个使用默认参数的无参数构造函数.
这不是出于非常明智的原因:
class MyClass(field1: String = "foo", field2: String = "bar") {
def this() = {
this() // <-- Does not compile, but how do I not duplicate the defaults?
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何我想念的东西.任何不需要重复参数默认值的想法?
谢谢!
Rex*_*err 12
我不会真的推荐它,但你可以通过在构造函数中添加另一个参数来实现:
class MyClass(a: String = "foo", b: String = "bar", u: Unit = ()) {
def this() { this(u = ()) }
}
Run Code Online (Sandbox Code Playgroud)
Unit 是一个很好的选择,因为你无论如何只能传递一个东西,所以显式传递默认值不允许任何错误的可能性,但它允许你调用正确的构造函数.
如果您只想复制其中一个默认值,则可以使用相同的策略,除了覆盖一个选择的默认值而不是添加unit参数.