Когда вы объявляете тип как Double
, это примитив double
(а не класс-оболочка Double
).
Когда вы объявляете тип как Any
, метод принимает любой объект в качестве параметра, поэтому даже если вы передадите примитив double
, он будет автоматически упакованв объект-оболочку для Double
и больше не будет примитивом.
Это можно увидеть, запустив этот фрагмент на play.kotlinlang.org :
fun main() {
useDouble(3.0)
useAny(3.0)
}
fun useDouble(value: Double) = println("${value.javaClass.name}")
fun useAny(value: Any) = println("${value.javaClass.name}")
Отпечатки:
double
java.lang.Double