一 JAVA
- 数据类通常需要重写equals(),hashCode(),toString()方法。
- 其中,equals方法用于判断两个数据类是否相等;hashCode方法作为equals的配套方法,也需要一起重写
public class Phone2 {
String brand;
double price;
public Phone2(String brand, double price) {
this.brand = brand;
this.price = price;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Phone2) {
Phone2 other = (Phone2) obj;
return other.brand.equals(brand) && other.price == price;
}
return false;
}
@Override
public int hashCode() {
return brand.hashCode() + (int) price;
}
@Override
public String toString() {
return "Phone2{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
}
val phone3=Phone2("XiaoMi", 3799.00)
val phone4=Phone2("XiaoMi", 3799.00)
println(phone3.toString()) //输出:Phone2{brand='XiaoMi', price=3799.0}
println(phone3 == phone4) //输出:true
二 KOTLIN
- data关键字 声明数据类,不用重写equals和hashCode方法
kt自动生成equals,hashcode,toString方法
//Phone数据类(加data关键字)
data class Phone(val brand: String, val price: Double)
val phone1 = Phone("XiaoMi", 3799.00)
val phone2 = Phone("XiaoMi", 3799.00)
println(phone1) //输出:Phone(brand=XiaoMi, price=3799.0)
println(phone1 == phone2) //true