【问题标题】:Difference between Groovy def and Java Object?Groovy def 和 Java 对象之间的区别?
【发布时间】:2010-10-16 04:07:51
【问题描述】:

我正在尝试找出两者之间的区别

时髦的:

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

但是这不会建立

谢谢,斯蒂芬

解决方案编辑: 原来我犯的错误是我有一个用 def 定义的带有公共属性的 groovy 类(在我上面的 DOB 示例中),但随后试图从 .java 类访问它们(在我上面的示例中调用 .getYear() 就可以了)。这是一个新手错误,但问题是一旦对象离开 Groovy 文件,它就会被简单地视为对象。感谢您的所有帮助!

【问题讨论】:

  • 当你说this wont build时,你有例外吗?

标签: java groovy


【解决方案1】:

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

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

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

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

因此,def 在 Groovy 中比在 Java 中毫无根据地使用 Object 更有意义。

【讨论】:

  • 我最初的希望是 def 以这种方式执行,但是当我尝试诸如:'def DOB = new Date(1999,5,2); dob.getYear();'它不会让我建立
  • 我刚刚尝试了您的 .toUppercase 示例,但这也不允许我构建..我是否缺少编译器设置或其他内容?我正在使用 netbeans 6.9.1
  • 您是否将项目创建为 groovy 项目?!?
  • 当然,要构建一些东西,你必须声明一个类,就像在 Java 中一样。只是groovy控制台可以让你直接输入和执行语句,但这不是构建。
【解决方案2】:

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

您最初的 groovy date 示例有效。

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 2017-05-15
    • 2012-04-25
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2014-06-01
    • 2011-07-13
    相关资源
    最近更新 更多