如何在类没有参数时自动生成对象

时间:2016-03-26 17:10:33

标签: scala class

所以我有一个名为Person的简单类,这个类有几个字段:

class person {

val name:String
val abe:Int

  def generateRandom(): Person {

     // Here i want to generate Person and return
  }
}

因为你可以看到我希望我的班级可以选择生成random Person,但我不想将任何参数传递给我的班级,我希望它是自动的。 那么如何在此Person方法中创建新的generateRandom对象并将其与nameage字段一起返回? 有任何建议如何实施吗?

3 个答案:

答案 0 :(得分:1)

你使用val作为名称和年龄,所以没有别的办法 - 你必须在构造函数中设置。但是,您可以将构造函数设置为private并将generator方法移动到companion对象(因为它可以访问私有构造函数)。代码如下所示:

class Person private (val name: String, val age: Int)

object Person {
  def generateRandom(): Person = {
    val randomName = ...
    val randomAge = ...
    new Person(randomName, randomAge)
  }
}

//new Person("asdas", 3) not possible

val person = Person.generateRandom()
println(person.name, person.age)

答案 1 :(得分:0)

我认为你需要在括号中加param: String = null。伴随着if(param == null) ...... Scala default parameters and null

答案 2 :(得分:0)

看起来很简单。

只需从方法中返回新的Person对象,向Name和Age添加一些随机值。