kotlin – 数字类型的自动转换

在Java中 ,我们可以将int赋值为double ,例如double x = 123 ;

在kotlin ,我们得到了一个编译错误。

问题:我们可以在kotlin启用自动转换功能吗? 为什么kotlin默认没有这个功能?

 var x: Double = 123; // ERROR 

再举一个例子:

 fun foo(x: Double) { } fun main(args: Array<String>) { foo(123.0); // OK foo(123); // ERROR } 

更新:

文字123可以在编译时自动转换为ShortLong 但它不会被转换为FloatDouble

 fun fooShort(x: Short) {} fun fooInt(x: Int) {} fun fooLong(x: Long) {} fun main(args: Array<String>) { fooShort(123) // OK fooInt(123) // OK fooLong(123) // OK } 

不,这不会发生。 由于kotlin是强类型的意思类型不被隐式强制 。 你需要一个明确的类型转换。 从显式转换的Kotlin参考中可以看出:

由于不同的表述,较小的类型不是较大的类型。 因此,较小的类型不会被隐式转换为较大的类型。 […]我们可以使用显式转换来扩大数字。