package cn.hanjiaxiaozhi.caseclassdemo;/**
* Author hanjiaxiaozhi
* Date 2020/7/17 11:10
* Desc
*/
public class Student_Java {
privateString name;private int age;privateString address;
public Student_Java(String name, int age,String address){
this.name = name;this.age = age;this.address = address;}
public String getName(){
return name;}
public void setName(String name){
this.name = name;}
public int getAge(){
return age;}
public void setAge(int age){
this.age = age;}
public String getAddress(){
return address;}
public void setAddress(String address){
this.address = address;}@Override
public boolean equals(Object o){
if(this== o)returntrue;if(o ==null|| getClass()!= o.getClass())returnfalse;
Student_Java that =(Student_Java) o;if(age != that.age)returnfalse;if(!name.equals(that.name))returnfalse;return address.equals(that.address);}@Override
public int hashCode(){
int result = name.hashCode();
result =31* result + age;
result =31* result + address.hashCode();return result;}@Override
public String toString(){
return"Student_Java{"+"name='"+ name +'\''+", age="+ age +", address='"+ address +'\''+'}';}}
扩展:
java14中提供的record新特性可以解决上面的问题
java就是抄袭的Scala的样例类
当然最开始scala是在java基础之上发展起来的
Scala中的样例类case class
case class是多例的,后面要跟构造参数,
case object是单例的.
当你声明样例类时,如下几件事情会自动发生:
构造器中的每一个参数都成为val,除非它被显式地声明为var(不建议这样做)
在伴生对象中提供apply方法让你不用new关键字就能构造出相应的对象
提供unapply方法让模式匹配可以工作
将生成toString、equals、hashCode和copy方法
除上述外,样例类和其他类型完全一样。你可以添加方法和字段,扩展它们。
定义格式
case class 样例类名([var/val] 成员变量名1:类型1, 成员变量名2:类型2, 成员变量名3:类型3)