gpt4 book ai didi

intellij-idea - 我如何知道 Kotlin 中的推断类型?

转载 作者:IT老高 更新时间:2023-10-28 13:36:16 32 4
gpt4 key购买 nike

(我使用 Kotlin 1.1.2-2)

例如,我如何知道表达式 if (boolean_value) 1 else 2.0 的推断类型? kotlinc-jvm 不显示类型。 javaClass 也无济于事,因为它显示的是计算值的类型而不是表达式。

>>> (if (true) 1 else 2.0).javaClass.name
java.lang.Integer
>>> (if (false) 1 else 2.0).javaClass.name
java.lang.Double
>>> val v: Double = if (false) 1 else 2.0
error: the integer literal does not conform to the expected type Double
val v: Double = if (false) 1 else 2.0
^

最佳答案

当将具有 diff 类型结果的 if 表达式分配给隐式原始变量(没有类型定义的变量)时,变量类型为 Any/T?,或带有直接父类(super class) P 的隐式变量。例如:

// case 1
val v = if (false) 1 else 2.0
// ^--- Any
v.toInt(); // error because v is Any

// case 2
val v = if (false) 1 else null
// ^--- Int?

// case 3
val e = if (true) java.sql.Time(1) else java.sql.Timestamp(1);
// ^--- its type is java.util.Date

但您可以使用它们的父类(super class)显式定义变量,例如:

// case 1
val v:Number = if (false) 1 else 2.0;
v.toInt();//ok

// case 2
val v:Int? = if (false) 1 else null;

注意:在IDEA中也可以使用CTRL+SHIFT+P/CTRL+Q快速查看变量类型。

关于intellij-idea - 我如何知道 Kotlin 中的推断类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732706/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com