我试图覆盖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)'
不确定如何修复/取消此警告。
答案 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'