首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐式类型转换?

隐式类型转换?
EN

Stack Overflow用户
提问于 2011-11-17 12:17:20
回答 1查看 266关注 0票数 2

我正在检查别人的Grails代码,我看到了以下内容:

代码语言:javascript
复制
Set<Integer> weeks = new ArrayList<Integer>()

看起来在设置了这一行之后,Grails认为weeks是一个HashSet。我既不精通Java也不精通Grails,(java)文档看起来像ArrayList扩展列表和HashSet扩展集,但这种直接构造不起作用。这是Grails的事情吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-17 13:03:18

在Groovy中看到new ArrayList<Integer>()有点不常见,因为[]的工作原理是一样的,而且没有那么冗长,所以我会把它写成Set<Integer> weeks = []。然后就更清楚了- Groovy正在将一种集合类型转换为另一种集合类型,[]实际上是一种创建holder并填充初始数据(如果有的话)的便捷方法。由于除了用于List[:][]之外,集合没有语法糖,因此您需要这些转换。

def weeks = [] as Set可能是更常见的语法。这一点也更清楚,因为[]只是临时的,使用"as“进行转换,并且比仅在左侧声明类型更明确。

您还可以使用它将集合转换为数组。您不能使用Java语法来创建数组,因为它使用大括号并且看起来像一个闭包定义,所以您必须使用int[] numbers = [1, 2, 3]def numbers = [1, 2, 3] as int[]来代替int[] numbers = new int[] { 1, 2, 3 }

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8162049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档