在一个规范的系统架构中,数据类通常占据着非常重要的的角色,它们用于将服务器端或数据库中的数据映射到内存中,为编程逻辑提供数据模型的支持;数据类通常需要重写equals()、hashCode()、toString()方法。(hashCode()方法作为equals()的配套方法,需要一同重写,否则会导致HashMap、HashSet等Hash相关的系统类无法正常工作)
//Java数据类实现
public class Phone {String brand;double price;public Phone(String brand, double price) {this.brand = brand;this.price = price;}@overridepublic boolean equals(Object obj) {if(obj instanceof Phone) {Phone other = (Phone) obj;return other.brand.equals(brand) && other.price == price;}return false;}@overridepublic int hashCode() {return brand.hashCode() + (int) price;}@overridepublic String toString() {return "Phone(brand=" + brand + ", price=" + price + ")";}
}
//Kotlin数据类实现
data class Phone(val brand: String, val price: Double)
/*解释:当在一个类前面声明了data关键字时,就表明这是一个数据类
Kotlin会根据主构造函数中参数为你自动生成equals()、hashCode()、toString()
等固定格式且无实际逻辑意义的函数*/