Kotlin 核心编程 (57):面向对象 3.4.1

阅读数:1 2019 年 12 月 28 日 22:25

Kotlin核心编程(57):面向对象 3.4.1

(烦琐的 JavaBean)

内容简介
本书不是一本简单介绍 Kotlin 语法应用的图书,而是一部专注于帮助读者深入理解 Kotlin 的设计理念,指导读者实现 Kotlin 高层次开发的实战型著作。书中深入介绍了 Kotlin 的核心语言特性、设计模式、函数式编程、异步开发等内容,并以 Android 和 Web 两个平台为背景,演示了 Kotlin 的实战应用。
全书共 13 章,分为 4 个部分:
热身篇—Kotlin 基础(第 1~2 章),简单介绍了 Kotlin 设计哲学、生态及基础语法,其中包括 Kotlin 与 Scala、Java 之间的关联与对比,以及 Kotlin 的类型声明的特殊性、val 和 var 的使用、高阶函数的使用、面向表达式编程的使用、字符串的定义与操作等内容;
下水篇—Kotlin 核心(第 3~8 章),深入介绍了面向对象、代数数据类型、模式匹配、类型系统、Lambda、集合、多态、扩展、元编程等 Kotlin 开发核心知识,这是本书的重点,其中涉及很多开发者特别关心的问题,比如多继承问题、模式匹配问题、用代数数据类型抽象业务问题、泛型问题、反射问题等。
潜入篇—Kotlin 探索(第 9~11 章),探索 Kotlin 在设计模式、函数式编程、异步和并发等编程领域的应用,其中包括对 4 大类设计模式、Typeclass 实现、函数式通用结构设计、类型替代异常处理、共享资源控制、CQRS 架构等重点内容的深入剖析;
遨游篇—Kotlin 实战(第 12~13 章),着重演示了 Kotlin 在 Android 和 Web 平台的实战案例,其中涉及架构方式、单向数据流模型、解耦视图导航、响应式编程、Spring 5 响应式框架和编程等内容。

首先我们先来回顾一下熟悉的 JavaBean。当我们要定义一个数据模型类时,就需要为其中的每一个属性定义 getter、setter 方法。如果要支持对象值的比较,我们甚至还要重写 hashcode、equals 等方法。比如下面的例子:

复制代码
public class Bird {
private double weight;
private int age;
private String color;
public void fly() {
}
public Bird(double weight, int age, String color) {
this.weight = weight;
this.age = age;
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof Bird))
return false;
Bird bird = (Bird) o;
if (Double.compare(bird.getWeight(), getWeight()) != 0)
return false;
if (getAge() != bird.getAge())
return false;
return getColor().equals(bird.getColor());
}
@Override
public int hashCode() {
int result;
long temp;
temp = Double.doubleToLongBits(getWeight());
result = (int) (temp ^ (temp > > > 32));
result = 31 * result + getAge();
result = 31 * result + getColor().hashCode();
return result;
}
@Override
public String toString() {
return "Bird{" +
"weight=" + weight +
", age=" + age +
", color='" + color + '\'' +
'}';
}
}

这是一个只有 3 个属性的 JavaBean,但代码量竟然足有 60 多行。可想而知,若是你想要更多的属性,那么一个 JavaBean 将会有多少代码量,而你的初衷无非就是想要有一个单纯封装数据的类而已,最后却变成了一堆样板式的代码。幸运的是,在 Kotlin 中我们将不再面对这个问题,它引入了 data class 的语法来改善这一情况。让我们来看看它到底是一个什么东西。

Kotlin核心编程(57):面向对象 3.4.1

购书地址 https://item.jd.com/12519581.html?dist=jd

评论

发布