Многие из методов в java.lang.Object
, в частности потоковые примитивы wait
и notify
(которые были почти полностью заменены потоковыми примитивами более высокого уровня) и наличие защищенного метода clone
, рассматриваются как *. дизайнерские ошибки Java, а также других.
Некоторые ссылки:
Дизайнеры Kotlin решили не распространять эти ошибки в свой тип top .
Кроме того, благодаря наличию функций расширения легко «расширить» Any
с помощью дополнительных функций верхнего уровня, которые могут вам понадобиться для вашего собственного проекта - например, большинство моих проекты содержат эти два метода, которые позволяют выполнять плавные приведения, а не броски в стиле скобок:
inline fun <reified T> Any.cast() = this as T
inline fun <reified T> Any.safeCast() = this as? T
Наконец, в то время как основное время выполнения Kotlin - это JVM (и JVM-подобные среды выполнения, такие как Android) которые представляют Kotlin Any
как тип Object
JVM Kotlin поддерживает компиляцию с другими бэкэндами, такими как JavaScript и собственный код. Учитывая это, еще более разумно, чтобы верхний тип языка был как можно более скудным.