当我使用变量而不声明它时,为什么 Eclipse 不显示错误?
编辑:
AFAIK 动态性质仅意味着在运行时才知道变量的类型。变量在使用前仍必须定义(显式或隐式)。例如 - Python 也是一种动态语言,将其报告为错误。
Edit2: groovy 如何解释此代码以使其仍然不是错误?
因为在像 groovy 这样的动态语言中,可以实现methodMissing()
/ propertyMissing()
。因此,虽然这样的变量或方法实际上并不存在,但在程序实际运行之前,它可能仍然不是错误。此类错误通常只能在运行时检测到,因此 IDE 通常不会抱怨它。
虽然提示您,但 Eclipse 正在强调它无法静态引用的此类变量。
编辑 :
要通过代码示例来解释这个概念,只需检查下面的方法测试。现在IDE不能知道something
,that
...实际上可以是这个类中的一个方法。
这极大地有助于在 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()
我认为您可以尝试在方法上使用 @CompileStatic 标记。然后 Eclipse 将在编译时或开发时编译并检查错误。
我现在还没有 Eclipse 来检查这个,所以这只是一个建议。