1 data class
在一个规范的系统架构中,数据类通常占据着非常重要的角色。
在 Java 中,定义一个数据类,通常需要为其中的每一个属性定义 get/set 方法。如果要支持对象值的比较,甚至还要重写 hashCode、equals 等方法,比如:
public class CellPhone {
private String brand;
private double price;
public CellPhone() {
}
public CellPhone(String brand, double price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CellPhone cellPhone = (CellPhone) o;
return Double.compare(cellPhone.price, price) == 0 && brand.equals(cellPhone.brand);
}
@Override
public int hashCode() {
return Objects.hash(brand, price);
}
@Override
public String toString() {
return "CellPhone{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
}
以上是只有 2 个属性的 Java 数据类,已经有 50 多行代码了,属性越多,代码量也就越大。
在 Kotlin 中引入了 data class 的语法来改善着一情况,data class 就是数据类。 把上面的 Java 代码用 Kotlin 的 data class 来实现,只需要一行代码
data class CellPhone(val brand: String, val price: Double)