我试图找出两者之间的区别
Groovy:
def name = "stephanie"
Java:
Object name = "stephanie"
由于两者似乎都充当与它们交互的对象,因此我必须将它们转换为原始的预期类型。
我最初是在寻找 C# 动态类的 java 等价物(Java相当于C#动态类类型吗? https://stackoverflow.com/questions/3935832/java-equivalent-to-c-dynamic-class-type)并建议查看 Groovy 的def
例如,我对 groovy 的 def 的印象是我可以执行以下操作:
def DOB = new Date(1998,5,23);
int x = DOB.getYear();
但这不会建立
谢谢,斯蒂芬
解决方案编辑:
事实证明,我犯的错误是我有一个用 def 定义的带有公共属性的常规类(在上面的 DOB 示例中),但随后尝试从 .java 类访问它们(在上面的示例中调用 .getYear() ) )。这是一个菜鸟错误,但问题是一旦对象离开 Groovy 文件,它就会被简单地视为对象。感谢你的帮助!
就其本身而言,这两种说法没有太大区别;但由于 Groovy 是一种动态语言,因此您可以编写
def name = "Stephanie"
println name.toUpperCase() // no cast required
而您需要在 Java 版本中进行显式转换
Object name = "Stephanie";
System.out.println(((String) name).toUpperCase());
是因为,def
在 Groovy 中比毫无根据地使用更有意义Object
在爪哇。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)