data类复写hashCode函数 , 比较对象属性的值 , 而非地址 非data类比较: classUser(varname : String,varage: Int ) {}varuser1 = User("Alice",25)varuser2 = User("Alice",25) Log.i(Tag,"user1.equal(user2)->"+(user1.equals(user2))) 打印结果: user1.equal(user2)->false data类比较: ...
equals():用于比较两个对象的内容是否相同。 hashCode():返回对象的哈希码,用于哈希集合。 toString():返回对象的字符串表示,包含所有属性的值。 copy():创建对象的副本,同时可以修改部分属性。 dataclassPerson(valname:String,valage:Int)funmain(){valamy=Person("Amy",25)valjohn=Person("John",30)valamy2...
println(map[sample]) // 修改了对象的一些属性 sample.id =2 // 拿不到 value 了 println(map[sample]) // 但是对象还是同一个对象 println(map.keys.first == sample) } dataclassSample(varid:Int)// 肇事者 这个程序的输出结果是, 1 null true 从Kotlin 反编译的结果来看, publicfinalclassSample{...
data类复写hashCode函数 , 比较对象属性的值 , 而非地址 // 非data类val player1=PlayerClass("Peter",24)val player2=PlayerClass("Peter",24)println(player1.equals(player2))// false. call === implicitlyprintln(player1.hashCode())// 1414644648println(player2.hashCode())// 640070680// data类val...
使用Data Class非常简单,只需要在类声明前加上data关键字即可。以下是一个简单的例子: dataclassPerson(valname:String,valage:Int) 在上面的例子中,我们定义了一个名为Person的Data Class,它有两个属性:name和age。Kotlin编译器会自动为我们生成以下方法: •equals():用于比较两个对象是否相等。 •hashCode()...
dataclassGirl(varname:String="",varage:Int=0,varheight:Int=0,varaddress:String="") vargirl3:Girl=Girl() 1. 2. 3. copy函数 当要复制一个对象,只改变一些属性,但其余不变,copy()就是为此而生 vargirl1:Girl=Girl("嫚嫚",29,160,"廊坊") ...
dataclassPerson(valname:String,valage:Int) 上述代码定义了一个名为 Person 的数据类,它有两个属性:name 和 age。Kotlin 编译器会自动为数据类生成以下通用方法: equals():用于比较两个对象是否相等。 hashCode():返回对象的哈希码值。 toString():返回对象的字符串表示。
data class Coordinate(var x: Int, var y: Int, val z: Int) { val isInBounds = x > 0 && y > 0 } fun main() { println(Coordinate(10, 20, 30)) //== 比较的是内容 equals 默认使用的超类Any的实现 === 比较的是引用 // === 比较的是对象的引用 ...
对于函数式编程,通常要写大量的PoJo用以在函数之间传递数据,这些对象最大的特点就是仅是数据,且不可变(Immutable),通常的实现方式就是把成员变量全用final修饰(只读read only)。在Kotlin中,可以非常方便的定义这要的类型,即data class。 dataclassUser(valname: String,valage:Int) ...