Я хотел бы вызвать метод, имя которого содержит пространство в статическом контексте, но оно не работает. Любые предложения?groovy метод вызова имя содержит специальный символ
class Test2 {
void "test"() {
"test a"()
}
void "test a"() {
println "test a"
}
public static void main(String[] args) {
def t = new Test2()
t."test"() //it works
t."test a"() //raise error, Illegal class name "Test2$test a" in class file Test2$test a
}
}
G:\tmp\groovy\gp1\src>groovy -version
Groovy Version: 2.3.2 JVM: 1.7.0_02 Vendor: Oracle Corporation OS: Windows 7
G:\tmp\groovy\gp1\src>groovy Test2.groovy
Test1.main
Caught: java.lang.ClassFormatError: Illegal class name "Test2$test a" in class file Test2$test a
java.lang.ClassFormatError: Illegal class name "Test2$test a" in class file Test2$test a
at Test2.main(Test2.groovy:15)
Я думаю, что это статический контекст, добавив 'недействительным запуска)' метод (который вызывает 'this.'test а '()' работает хорошо, когда' метод main' называет 't.run() ' –
@tim_yates с любопытством, это не работает:' static main (args) {def t = new Invokes(); t.run (t)} def run (self) {self. "test a"()} ' – Will