2

当我使用变量而不声明它时,为什么 Eclipse 不显示错误?

在此处输入图像描述

编辑:

AFAIK 动态性质仅意味着在运行时才知道变量的类型。变量在使用前仍必须定义(显式或隐式)。例如 - Python 也是一种动态语言,将其报告为错误。

在此处输入图像描述

Edit2: groovy 如何解释此代码以使其仍然不是错误?

在此处输入图像描述

4

2 回答 2

4

因为在像 groovy 这样的动态语言中,可以实现methodMissing()/ propertyMissing()。因此,虽然这样的变量或方法实际上并不存在,但在程序实际运行之前,它可能仍然不是错误。此类错误通常只能在运行时检测到,因此 IDE 通常不会抱怨它。

虽然提示您,但 Eclipse 正在强调它无法静态引用的此类变量。

编辑 :

要通过代码示例来解释这个概念,只需检查下面的方法测试。现在IDE不能知道somethingthat...实际上可以是这个类中的一个方法。

这极大地有助于在 groovy 中构建 DSL。

class TestClass {
    def test() {
        def a = something.that.didnt.exist()
        or how about some random statements that make no sense at all
        a = ew Parser().doSomething() ew blah blah blah 
    }
     def propertyMissing(String name) { println "$name"; return this }
     def methodMissing(String name, args) { println "$name with $args"; return this  }
}

new TestClass().test()
于 2013-08-06T06:09:06.410 回答
2

我认为您可以尝试在方法上使用 @CompileStatic 标记。然后 Eclipse 将在编译时或开发时编译并检查错误。

我现在还没有 Eclipse 来检查这个,所以这只是一个建议。

于 2013-08-06T08:50:01.387 回答