为什么在没有声明变量的情况下使用变量时eclipse不显示错误?
修改
AFAIK动态特性仅表示在运行时才知道变量类型。在使用之前,仍然必须(显式或隐式)定义变量。例如,Python也是一种动态语言,将其报告为错误。
EDIT2: groovy如何解释这段代码,使它仍然不是错误?
答案 0 :(得分:4)
因为在像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()
答案 1 :(得分:2)
我认为您可能会尝试在方法上使用@CompileStatic标记。 然后Eclipse将在编译时或开发时编译和检查错误。
我现在没有Eclipse来检查这个,所以这只是一个提案。