Класс Any
Класс Any является корневым суперклассом
для всех классов в Kotlin. Каждый класс, который
не указывает явно родительский класс, неявно
наследуется от Any. Класс предоставляет
базовые методы, которые доступны всем объектам.
Синтаксис
kotlinopen class Any
Методы
Класс Any предоставляет следующие методы:
kotlinopen operator fun equals(other: Any?): Boolean
open fun hashCode(): Int
open fun toString(): String
Пример
Создадим простой класс, который неявно
наследуется от Any:
kotlinclass Person(val name: String, val age: Int)
val person = Person("John", 25)
println(person.toString())
Результат выполнения кода:
kotlinPerson@4eec7777
Пример
Переопределим метод toString
для нашего класса:
kotlinclass 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())
Результат выполнения кода:
kotlinPerson(name=John, age=25)
Пример
Переопределим метод equals
для сравнения объектов:
kotlinclass 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)
Результат выполнения кода:
kotlintrue
false
Пример
Использование метода hashCode
для получения хэш-кода объекта:
kotlinval person = Person("John", 25)
println(person.hashCode())
Результат выполнения кода:
kotlin71988570