题目:定义一个Person类和伴生对象Person,属性:name,age,health(健康状况)权限:private,要求属性都有getter和setter,定义apply方法和unapply方法,以上问题用eclipse-scala代码的形式解决。
时间: 2024-12-11 16:28:30 浏览: 16
在Scala中,你可以使用case class和companion object的方式来实现这个需求。这里是一个例子:
```scala
import scala.util.Try
// 定义Person类,属性为私有并提供getter和setter
class Person private(var name: String, var age: Int, var health: Int) {
// Getter and Setter methods
def getName = name
def setName(name: String): Unit = this.name = name
def getAge = age
def setAge(age: Int): Unit = this.age = age
def getHealth = health
def setHealth(health: Int): Unit = this.health = health
}
// Person的伴生对象,用于apply和unapply方法
object Person {
// apply方法用于创建Person实例,接受name, age, health作为参数
def apply(name: String, age: Int, health: Int): Try[Person] = {
if (name.nonEmpty && age > 0 && health >= 0) {
Success(new Person(name, age, health))
} else {
Failure(new IllegalArgumentException("Invalid person attributes"))
}
}
// unapply方法用于从可能存在该结构的对象解构出Person实例
def unapply(person: Person): Option[(String, Int, Int)] = Some(person.name, person.age, person.health)
}
```
在这个代码片段中,`Person`类有三个私有属性,并通过`apply`方法创建新的实例,同时检查输入的有效性。`unapply`方法则用于从已有的对象中提取出对应的属性值。
阅读全文