Groovy def和Java对象之间的区别?

时间:2010-10-14 20:28:42

标签: java groovy

我正试图找出

之间的区别

Groovy的:

def name = "stephanie"

爪哇:

Object name = "stephanie"

因为两者似乎都充当了与它们互动的对象,所以我必须将它们转换为原来的预期类型。

我最初是在寻找一个与C#的动态类(Java equivalent to C# dynamic class type?)相当的java,并建议查看Groovy的def

例如我对groovy def的印象是我可以做以下事情:

def DOB = new Date(1998,5,23);
int x = DOB.getYear();
然而,这不会构建

感谢,斯蒂芬

解决方案编辑: 原来的错误因为我有一个groovy类与公共属性(在我的DOB上面的例子中)用def定义,但后来试图从.java类访问它们(在上面的例子里面调用.getYear()) )。它是一个菜鸟错误,但问题是一旦对象离开Groovy文件,它就被视为一个Object。谢谢你的帮助!

2 个答案:

答案 0 :(得分:16)

本身,这两个陈述之间没有太大区别;但由于Groovy是一种动态语言,你可以写

def name = "Stephanie"
println name.toUpperCase() // no cast required

虽然您需要在Java版本中进行显式转换

Object name = "Stephanie";
System.out.println(((String) name).toUpperCase());

出于这个原因,def在Groovy中比在Java中毫无根据地使用Object更有意义。

答案 1 :(得分:4)

您可以在groovy Web控制台http://groovyconsole.appspot.com/

中试验groovy

您的初始groovy日期示例有效。