错误记录Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误记录Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )相关的知识,希望对你有一定的参考价值。
文章目录
一、报错信息
使用 MetaClass 为类注入方法时 , 如果注入的方法与类中原有的方法有冲突 ,
class Student
def name;
def hello()
println "Hello " + name
// 向 Student 类注入 hello 方法
Student.metaClass.hello <<
println delegate
println "Hello $delegate.name"
执行上述方法 , 会有如下报错 ;
报错信息 :
Caught: groovy.lang.GroovyRuntimeException: Cannot add new method [hello] for arguments [[]]. It already exists!
groovy.lang.GroovyRuntimeException: Cannot add new method [hello] for arguments [[]]. It already exists!
at Groovy.run(Groovy.groovy:11)
二、解决方案
如果使用 Category 分类的方式注入方法 , 注入的方法可以与类中原来的方法相同 , 参考 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Category 注解进行方法注入 | 分类注入方法查找优先级 ) 博客 ;
使用 MetaClass 的方式注入方法 , 注入的方法不可与原来的方法冲突 , 否则就会报上述错误 ; 参考 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 MetaClass 进行方法注入普通方法 ) 博客 ;
以上是关于错误记录Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )的主要内容,如果未能解决你的问题,请参考以下文章
错误记录IntelliJ IDEA 编译 Groovy 项目报错 ( Groovy SDK is not configured for module )
错误记录Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )
错误记录IntelliJ IDEA 编译 Groovy 报错 ( GroovyRuntimeException: This script or class could not be run. )
错误记录Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )
错误记录Groovy 报错 ( Execution failed for task ‘:compileGroovy‘. > org/apache/tools/ant/taskdefs/Java )
错误记录IntelliJ IDEA 编译 Groovy 报错 ( Could not open/create prefs root node SoftwareJavaSoftPrefs )