Java 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

嗨,我需要帮助如何在Scala中用两个构造函数转换它

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())
}