В Scala вы обычно делаете это, используя объект-компаньон:
class Configure private (config: Config) {
def configString(name: String) = config.getString(name)
}
case object Configure {
def apply(confFileName: String ) =
new Configure(ConfigFactory.load(confFileName))
def apply() =
new Configure(ConfigFactory.load())
}
Это прекрасно отделяет поведение класса от различных способов его создания.
[Я переименовал getString
потому что «получатели» обычно не начинаются с get
в Scala, это просто имя получаемого значения.]