加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在groovy中输入强制

发布时间:2020-12-14 16:28:28 所属栏目:大数据 来源:网络整理
导读:常规支持什么样的类型强制? 我看到地图强制和封闭强制.还有别的吗? 类型强制和类型推断之间有什么区别? 例如 def i = 1000 // type infere to Integeri = 1000000000000 // type infere to Long or is this type coercion? 解决方法 Groovy可以使用在运行
常规支持什么样的类型强制?
我看到地图强制和封闭强制.还有别的吗?

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

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

解决方法

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

在您的示例中:def i = 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的文档:“Closures in Groovy工作类似于”方法指针“,使代码能够在稍后的时间点编写和运行”.

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

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

Byte a = 12
Double b = 10

assert a instanceof Byte
assert b instanceof Double

assert a > b

Groovy“as”关键字用于以下情况:

>用于“Groovy”转换以将一种类型的值转换为另一种类型
>用于将闭包强制转换为单个方法的实现
接口
>用于将Map强制转换为接口,抽象和/或具体类的实现

除了map和闭包中的类型强制之外,还有“Groovy Truth”,它将表达式中的类型计算为TRUE或FALSE.

> null为false
> empty String,Map或Collection为false
>零数是错误的
> if(list); if(string),if(map)
和写if一样(list!= null&&!list.isEmpty())…

参考文献:

静态Groovy和并发:在行动中键入推理
http://groovy.dzone.com/articles/static-groovy-and-concurrency-3

Groovy运算符重载
http://groovy.codehaus.org/Operator+Overloading

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读