Watch This Video
//InterceptCacheInvoke.groovy
class Developer{
List languages =[]
def methodMissing(String name, args){
println "${name}() method was called..."
if(name.startsWith('write')){
String language = name.split("write")[1]
if(languages.contains(language)){
def impl ={Object [] theArgs ->
"I like to write code in $language"
}
getMetaClass()."$name"=impl
return impl(args)
}
}
}
}
Developer dan =new Developer()
dan.languages << "Groovy"
dan.languages << "Java"
println dan.metaClass.method.size()
dan.writeGroovy()
dan.writeGroovy()
dan.writeGroovy()
println dan.metaClass.method.size()
dan.writeJava()
dan.writeJava()
dan.writeJava()
println dan.metaClass.method.size()
No comments:
Post a Comment
Note: only a member of this blog may post a comment.