Groovy覆盖静态getAt(下标)运算符

时间:2016-04-22 08:27:48

标签: intellij-idea groovy

我试图覆盖Groovy中的静态getAt运算符。它运行正常,但我被IntelliJ中的一个令人讨厌的警告所困扰。

class SubscriptTest {

    static def map = [
        (SubscriptKey.ONE)  : 'one',
        (SubscriptKey.TWO)  : 'two',
        (SubscriptKey.THREE): 'three',
    ]

    static Object getAt(SubscriptKey key) {
        map[key]
    }
}

enum SubscriptKey {
    ONE,
    TWO,
    THREE
}

当我跑步时

println SubscriptTest[SubscriptKey.ONE]

打印one。但我也在IntelliJ中收到以下警告。

  'org.codehaus.groovy.runtime.DefaultGroovyMethods'中的

'getAt'无法应用于'(SubscriptKey)'

不确定如何修复/取消此警告。

1 个答案:

答案 0 :(得分:2)

  

我试图覆盖Groovy中的静态getAt运算符

没有静态getAt方法,有一个not-static getAt method。以下是如何覆盖非静态getAt方法

的示例
// run this code in the Groovy console
class SubscriptTest {

    static def map = [
        (SubscriptKey.ONE)  : 'one',
        (SubscriptKey.TWO)  : 'two',
        (SubscriptKey.THREE): 'three',
    ]

    Object getAt(String key) {
        'overriden getAt invoked'
    }
}

enum SubscriptKey {
    ONE,
    TWO,
    THREE
}

assert new SubscriptTest()['key'] == 'overriden getAt invoked'