Класс Any
Класс Any является корневым суперклассом
для всех классов в Kotlin. Каждый класс, который
не указывает явно родительский класс, неявно
наследуется от Any. Класс предоставляет
базовые методы, которые доступны всем объектам.
Синтаксис
open class Any
Методы
Класс Any предоставляет следующие методы:
open operator fun equals(other: Any?): Boolean
open fun hashCode(): Int
open fun toString(): String
Пример
Создадим простой класс, который неявно
наследуется от Any:
class Person(val name: String, val age: Int)
val person = Person("John", 25)
println(person.toString())
Результат выполнения кода:
Person@4eec7777
Пример
Переопределим метод toString
для нашего класса:
class Person(val name: String, val age: Int) {
override fun toString(): String {
return "Person(name=$name, age=$age)"
}
}
val person = Person("John", 25)
println(person.toString())
Результат выполнения кода:
Person(name=John, age=25)
Пример
Переопределим метод equals
для сравнения объектов:
class Person(val name: String, val age: Int) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is Person) return false
return name == other.name && age == other.age
}
override fun hashCode(): Int {
return name.hashCode() * 31 + age
}
}
val person1 = Person("John", 25)
val person2 = Person("John", 25)
val person3 = Person("Jane", 30)
println(person1 == person2)
println(person1 == person3)
Результат выполнения кода:
true
false
Пример
Использование метода hashCode
для получения хэш-кода объекта:
val person = Person("John", 25)
println(person.hashCode())
Результат выполнения кода:
71988570