Companion object has exactly same name as the class name and defined in the same source file. In Scala, both companion object and companion class can access each other private features.
How to define companion object for the class Employee?
Since both companion object and companion class should be defined in same file, open scala prompt and execute the command :paste. ‘:paste’ command opens an editor, paste below snippet.
class Employee(id: Int, firstName: String, lastName: String) { override def toString() = { s"$id, $firstName, $lastName" } } object Employee { def getEmployee(): Employee = new Employee(0, "no_name", "no_name") def getEmployee(id: Int): Employee = new Employee(id, "no_name", "no_name") def getEmployee(id: Int, firstName: String, lastName: String): Employee = new Employee(id, firstName, lastName) }
scala> :paste // Entering paste mode (ctrl-D to finish) class Employee(id: Int, firstName: String, lastName: String) { override def toString() = { s"$id, $firstName, $lastName" } } object Employee { def getEmployee(): Employee = new Employee(0, "no_name", "no_name") def getEmployee(id: Int): Employee = new Employee(id, "no_name", "no_name") def getEmployee(id: Int, firstName: String, lastName: String): Employee = new Employee(id, firstName, lastName) } // Exiting paste mode, now interpreting. class Employee object Employee
Now you can use the method 'getEmployee' defined in companion object to define new Employee instances.
val emp1 = Employee.getEmployee()
val emp2 = Employee.getEmployee(10)
val emp3 = Employee.getEmployee(10, "Krishna", "Gurram")
scala> val emp1 = Employee.getEmployee() val emp1: Employee = 0, no_name, no_name scala> val emp2 = Employee.getEmployee(10) val emp2: Employee = 10, no_name, no_name scala> val emp3 = Employee.getEmployee(10, "Krishna", "Gurram") val emp3: Employee = 10, Krishna, Gurram
Previous Next Home
No comments:
Post a Comment