警告“得到”#39;无法应用于整数'在Groovy中

时间:2015-09-25 09:22:04

标签: intellij-idea groovy

在我的Groovy代码的这一行:

def document = someQuery().Document[0]

方法someQuery将返回一个Json数组,这很有效。由于编辑不知道财产,因此它标有Document,并在[0]显示警告,说:

'getAt' in 'org.codehaus.groovy.runtime.DefaultGroovyMethods' cannot be applied to '(java.lang.Integer)'

那么为什么更好的方法是避免这种警告呢?

3 个答案:

答案 0 :(得分:0)

您可以向intellij添加动态方法和属性,以便了解它们。

http://confluence.jetbrains.com/display/GRVY/Dynamic+Methods+and+Properties

您还可以使用groovydsl让intellij知道您的代码应该如何运作。

答案 1 :(得分:0)

您的代码可能类似于:

def sql = //... (new/existing connection to the database)
sql.eachRow { row ->
    //Do something...
}

替换为:

def sql = //... (new/existing connection to the database)
sql.eachRow { GroovyResultSet row ->
    //Do something...
}

这将迫使您的编辑器在Groovy编译期间查看GroovyResultSet中的方法,而不是对象上具有相同名称的方法。

答案 2 :(得分:0)

严格地.getAt(0).getAt(-1),您也可以分别使用.first().last(),Intellij将停止抱怨。

来源:我刚刚尝试过。 (请参见code-completion,请参见getAt不需要整数)

    def shortId(def longId){
        longId?.toString()?.split('[/:]')?.last()
    }