groovy中的类型强制

groovy中的类型强制,groovy,Groovy,groovy支持哪种类型的强制? 我看到了地图强制和闭包强制。还有别的吗 类型强制和类型推断之间有什么区别? 比如说 def i = 1000 // type infere to Integer i = 1000000000000 // type infere to Long or is this type coercion? Groovy可以使用在运行时分配类型的动态非类型化变量类型推断指表达式类型的自动推断 在您的示例中:defi=1000将java.lang.Integer的实例分配给变

groovy支持哪种类型的强制? 我看到了地图强制和闭包强制。还有别的吗

类型强制和类型推断之间有什么区别? 比如说

def i = 1000 // type infere to Integer
i = 1000000000000 // type infere to Long or is this type coercion?

Groovy可以使用在运行时分配类型的动态非类型化变量类型推断指表达式类型的自动推断

在您的示例中:
defi=1000
将java.lang.Integer的实例分配给变量

以下是一些简单的测试示例:

assert "Integer" == 1000.class.simpleName
assert "Long" == 1000000000000.class.simpleName
assert "BigDecimal" == 3.14159.class.simpleName
assert "Float" == 3.14159f.class.simpleName
根据Groovy的文档:“工作类似于“方法指针”,使代码能够在稍后的时间点编写和运行”

此外,在处理确定类型的集合时,可以推断传递给集合类型上的操作的闭包

将变量传递给不同类型的方法或比较不同类型的变量时,类型强制起作用。在比较不同类型的数字时,类型强制规则应用于在比较之前将数字转换为最大的数字类型。因此,以下内容在Groovy中是有效的

Byte a = 12
Double b = 10

assert a instanceof Byte
assert b instanceof Double

assert a > b
Groovy“as”关键字用于以下情况:

  • 用于“Groovy”转换,将一种类型的值转换为另一种类型
  • 用于将闭包强制为单个方法的实现 接口
  • 用于将映射强制转换为接口、抽象和/或具体类的实现
除了映射和闭包中的类型强制之外,还有一种将表达式中的类型计算为TRUE或FALSE的方法

  • null为false
  • 空字符串、映射或集合为false
  • 零是假的
  • 如有(名单);;如果(字符串),如果(映射) 与写入if(list!=null&&!list.isEmpty())相同
参考资料:

静态Groovy和并发性:类型推理在起作用

Groovy运算符重载