我知道无法在辅助构造函数中创建值/变量。那么如何使用apply或其他技术来允许以下代码工作呢?
还有一点要求不要通过将值创建移到this()
内来破解它,当然我意识到这是可能的。
class DistanceCalculator(context: GeoApiContext) {
def this() {
val context = new GeoApiContext()
.setApiKey("AIza...")
.setConnectTimeout(1, TimeUnit.SECONDS)
.setReadTimeout(1, TimeUnit.SECONDS)
.setWriteTimeout(1, TimeUnit.SECONDS)
this(context)
}
}
Gabor告诉我,在调用此()之后可以得到值,但我不确定以下是正确的方法。
class DistanceCalculator(var context: GeoApiContext) {
def this() {
this()
this.context = new GeoApiContext()
.setApiKey("AIza...")
.setConnectTimeout(1, TimeUnit.SECONDS)
.setReadTimeout(1, TimeUnit.SECONDS)
.setWriteTimeout(1, TimeUnit.SECONDS)
}
}
答案 0 :(得分:2)
object DistanceCalculator {
def defaultContext = new GeoApiContext()
.setApiKey("AIza...")
.setConnectTimeout(1, TimeUnit.SECONDS)
.setReadTimeout(1, TimeUnit.SECONDS)
.setWriteTimeout(1, TimeUnit.SECONDS)
}
以下是两种方法:
class DistanceCalculator(context: GeoApiContext) {
def this() = this(DistanceCalculator.defaultContext)
}
或使用var
作为主构造函数并稍后设置上下文:
class DistanceCalculator(var context: GeoApiContext) {
def this() {
this(null)
this.context = defaultContext
}
}