前奏

第一种

  1. class Student(val name:String,val age:Int){
  2. override def equals(obj: Any): Boolean = {
  3. val student: Student = obj.asInstanceOf[Student]
  4. if(name==student.name && age == student.age){
  5. return true
  6. }
  7. return false
  8. }
  9. }
  10. object Test5{
  11. def main(args: Array[String]): Unit = {
  12. val stu = new Student("zs",18)
  13. if (stu.equals(new Student("zs",18)) ){
  14. println("match")
  15. }
  16. }
  17. }

第二种

  1. if (stu == new Student("zs", 18)){
  2. println("match")
  3. }

第三种

  1. object Student{
  2. def apply(name: String, age: Int): Student = new Student(name, age)
  3. def unapply(arg: Student): Option[(String, Int)] = {
  4. if (arg == null){
  5. None
  6. }else{
  7. Some((arg.name,arg.age))
  8. }
  9. }
  10. }
  11. object Test6{
  12. def main(args: Array[String]): Unit = {
  13. val stu = Student("zs",18)
  14. val res: String = stu match {
  15. case Student("zs", 18) => "match yes"
  16. case _ => "Nothing"
  17. }
  18. println(res)
  19. }
  20. }

样例类

  1. case class Teacher(val name:String,val age:Int)
  2. object Test7{
  3. def main(args: Array[String]): Unit = {
  4. val teacher = Teacher("ls",30)
  5. println(teacher match {
  6. case Teacher("ls", 30) => "teacher name is ls"
  7. case _ => "Nothing"
  8. })
  9. }
  10. }