Что является главным супертипом в Kotlin

Ответ

В Kotlin главным супертипом является Any. Это аналог Object в Java, но с некоторыми отличиями:

  • Any — базовый класс для всех non-nullable типов
  • Для nullable типов супертипом будет Any?
  • Any содержит три метода: equals(), hashCode(), toString()

Пример:

val anyValue: Any = 42  // Int
val anyString: Any = "Hello"  // String

Примитивные типы (Int, Boolean и др.) в Kotlin тоже наследуются от Any, в отличие от Java, где примитивы не наследуются от Object.

Ответ 18+ 🔞

Э, слушай, вот тебе на, про Kotlin. Сидишь такой, пишешь на Java, и тут — бац! — появляется этот самый Any. Ну, вроде как наш старый знакомый Object из Java, но, блядь, с такими приколами, что просто ёперный театр начинается.

Короче, Any — это типа главный папаша, предок для всех типов, которые не могут быть null. А если тебе вдруг захотелось похулиганить и запихнуть туда null, то тогда уже его старший брат, Any?, в дело вступает. Внутри у этого Any всего три метода сидит: equals(), hashCode() и toString(). Ничего лишнего, всё по делу, доверия к нему, блядь, ноль — сам всё проверяй.

А теперь самый сок, где я сам от себя охуел, когда узнал. В Java, если ты взял int — это примитив, хуй с горы, не наследник Object. А в Kotlin — похуй! Тут твой Int, Boolean и прочая мелочь — все они, сука, прямые потомки Any. Никакого бокса-бокса, пока явно не попросишь. Красота же!

Смотри, как это выглядит в коде, тут всё просто:

val anyValue: Any = 42  // Запихнул циферку, и норм
val anyString: Any = "Hello"  // Строку засунул — тоже ок

Вот и вся магия. Вроде мелочь, а приятно, когда логично. Не то что в некоторых языках, где от неожиданности можно манда с ушами остаться.