首页 文章

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

提问于
浏览
11

我想弄清楚它们之间的区别

Groovy的:

def name = "stephanie"

Java的:

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();

然而,这不会 Build

谢谢,斯蒂芬

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

2 回答

  • 4

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

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

    而你需要在Java版本中进行显式转换

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

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

  • 16

    你可以在groovy web控制台中试验groovy http://groovyconsole.appspot.com/

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

相关问题