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()
等固定格式且无实际逻辑意义的函数*/
相关推荐
萌新杰少1 分钟前
安卓原生项目迁移KMP——核心迁移
android·kotlin·jetbrains
Brilliantwxx12 分钟前
【C++】深度剖析 · 继承 (虚基表+虚函数表)
开发语言·c++
砍材农夫12 分钟前
物联网 基于netty构建mqtt协议规范(发布/订阅模式)
java·开发语言·物联网·netty
techdashen14 分钟前
Rust 泛型 vs Java 泛型:它们看起来相似,但骨子里截然不同
java·开发语言·rust
一只旭宝18 分钟前
【C加加入门精讲15】:IO流缓冲区、字符串流、缓冲流及STL vector容器零基础实战教程一、博客前言
开发语言·c++
在坚持一下我可没意见29 分钟前
Python 修仙修炼录 08:字典秘境,参悟键值玄机
开发语言·笔记·python·入门·字典
luck_bor32 分钟前
Map&Stream流
java·开发语言
阿文的代码库33 分钟前
如何在C++中使用标准库的智能指针
开发语言·c++·算法
yujunl36 分钟前
U9客开Demo代码中的错误
开发语言
郝学胜-神的一滴36 分钟前
Qt 高级开发 008: 使用QSetting记住上次打开路径
开发语言·c++·qt·开源软件