Java Scala构造函数如何在Scala语言中转换它
嗨,我需要帮助如何在Scala中用两个构造函数转换它Java Scala构造函数如何在Scala语言中转换它,java,scala,Java,Scala,嗨,我需要帮助如何在Scala中用两个构造函数转换它 public class Configure { private final Config config; public Configure(String confFileName) { config = ConfigFactory.load(confFileName); } public Configure() { config = ConfigFactory.load(); } public
public class Configure {
private final Config config;
public Configure(String confFileName) {
config = ConfigFactory.load(confFileName);
}
public Configure() {
config = ConfigFactory.load();
}
public String getString(String name) {
return config.getString(name);
}
}
在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
,因为在Scala中“getter”通常不以get
开头,它们只是被检索的值的名称。]可能重复的问题不完全相同,但严格来说是相同的概念,为了与Java等价,主构造函数也应该是私有的。为什么要使用private val config
而不仅仅是config
?使其成为私有成员而不仅仅是构造函数参数有什么好处?
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())
}