我的班级目前看起来像:
class WebConfig(config: Config) {
def this() {
this(ConfigFactor.load())
}
def dbPort = config.getInt("mysql.port")
}
当我调用dbPort时,我不喜欢它,它必须每次调用然后再转换配置。
所以我想创建私有字段并在构造函数中设置它们,因此调用dbPort只会返回私有字段的内容。
我该怎么做?
我尝试创建私有var但是我收到此错误:
class WebConfig(config: Config) {
private var _dbPort: Int
def this() {
this(ConfigFactor.load())
_dbPort = config.getInt("mysql.port")
}
def dbPort: Int = _dbPort
}
错误:
abstract member may not have private modifier
答案 0 :(得分:2)
你不能写这个:
class WebConfig(config: Config) {
def this() {
this(ConfigFactor.load())
}
val dbPort = config.getInt("mysql.port")
}
它只会读取一次配置参数。
答案 1 :(得分:2)
您收到该错误是因为您的私有变量最初没有赋值,因此被视为抽象,抽象变量不能是私有的,因为它们无法被实现所需的子类访问它们。
要解决此问题,您可以为您的变量指定占位符值,如下所示:
private var _dbPort: Int = _
话虽如此,我认为vptheron和kululimpa的建议是可行的。