scala官网写过一句话,scala语言是聪明人使用的语言。确实,scala对于java代码的高度封装,大大增加了代码的阅读门槛,但是同时也使代码变得简洁精炼,今天要聊的case样例类便是如此。
我们可以先回想一下,在java语言之中,我们要新构造一个类是怎么样的呢?
public class student {
public static void main(String[] args) {
student2 st=new student2("张三",24,"手机",24);
}
}
class student2 {
String name;
int age;
String gender;
int score;
public student2() {
}
public student2(String name, int age, String gender, int score) {
this.name = name;
this.age = age;
this.gender = gender;
this.score = score;
}
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "student2{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", score=" + score +
'}';
}
}
需要无参,有参构造方法,get(),set()方法,toString()和equals()方法,写起来会非常麻烦,但是如果我们使用scala代码,那么整个的步骤就可以被极大的缩短
object DemoStudent {
def main(args: Array[String]): Unit = {
val stu = new student2("张三", 24, "男")
println(stu.age)
}
case class student2(name:String,age:Int,gender:String)
}
一个case样例,就能极大的减少代码的冗余程度,那么scala是怎么做到这一点的呢?我们可以通过反编译来看一看 这里截取了部分,很明显的能看到,这里代码实现了get和set和hash方法,就是说虽然看上去之写了一行代码,但是却调了很多方法,这也是scala代码能做到这么简介原因。