Kotlin数据类

在一个规范的系统架构中,数据类通常占据着非常重要的的角色,它们用于将服务器端或数据库中的数据映射到内存中,为编程逻辑提供数据模型的支持;数据类通常需要重写equals()、hashCode()、toString()方法。(hashCode()方法作为equals()的配套方法,需要一同重写,否则会导致HashMap、HashSet等Hash相关的系统类无法正常工作)

java 复制代码
//Java数据类实现
public class Phone {
    String brand;
    double price;

    public Phone(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }

    @override
    public boolean equals(Object obj) {
        if(obj instanceof Phone) {
            Phone other = (Phone) 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 "Phone(brand=" + brand + ", price=" + price + ")";
    }
}
Kotlin 复制代码
//Kotlin数据类实现
data class Phone(val brand: String, val price: Double)
/*解释:当在一个类前面声明了data关键字时,就表明这是一个数据类
Kotlin会根据主构造函数中参数为你自动生成equals()、hashCode()、toString()
等固定格式且无实际逻辑意义的函数*/
相关推荐
alexhilton1 天前
端侧RAG实战指南
android·kotlin·android jetpack
Kapaseker2 天前
2026年,我们还该不该学编程?
android·kotlin
Kapaseker3 天前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
Kapaseker4 天前
一杯美式搞定 Kotlin 空安全
android·kotlin
FunnySaltyFish5 天前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
Kapaseker5 天前
Compose 进阶—巧用 GraphicsLayer
android·kotlin
Kapaseker6 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
A0微声z8 天前
Kotlin Multiplatform (KMP) 中使用 Protobuf
kotlin
alexhilton8 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
lhDream9 天前
Kotlin 开发者必看!JetBrains 开源 LLM 框架 Koog 快速上手指南(含示例)
kotlin