Scala构造函数如何用Scala语言转换此



嗨,我需要帮助如何用两个构造函数在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);
  }
}
class Configure(private val config :Config) {
  def this()                     = this(ConfigFactory.load())
  def this(confFileName :String) = this(ConfigFactory.load(confFileName))
}

在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,因为" Getters"通常不从Scala中的get开始,它们只是要检索的值的名称。]

最新更新