我想弄清楚它们之间的区别
Groovy的:
def name = "stephanie"
Run Code Online (Sandbox Code Playgroud)
Java的:
Object name = "stephanie"
Run Code Online (Sandbox Code Playgroud)
因为两者似乎都充当了与它们交互的对象,所以我必须将它们转换为原始的预期类型.
我最初是在寻找一个Java等价的C#的动态类(Java相当于C#动态类类型?),建议看一下Groovy的def
例如,我对groovy def的印象是我可以做以下事情:
def DOB = new Date(1998,5,23);
int x = DOB.getYear();
Run Code Online (Sandbox Code Playgroud)
然而,这不会建立
谢谢,斯蒂芬
解决方案编辑:弄清楚错误,因为我有一个groovy类与公共属性(在我的DOB上面的例子)用def定义,但后来正试图从.java类访问它们(在我上面的例子中调用.getYear( ) 在上面).它是一个菜鸟错误,但问题是一旦对象离开Groovy文件,它就被视为一个Object.感谢你的帮助!
Eri*_*ler 16
本身,这两个陈述之间没有太大区别; 但由于Groovy是一种动态语言,你可以写
def name = "Stephanie"
println name.toUpperCase() // no cast required
Run Code Online (Sandbox Code Playgroud)
而你需要在Java版本中进行显式转换
Object name = "Stephanie";
System.out.println(((String) name).toUpperCase());
Run Code Online (Sandbox Code Playgroud)
出于这个原因,def
在Groovy中比Object
在Java中没有根据的使用更有意义.