[Groovy] [已解决]Groovy类型转换的疑问

dean_liu 2012-12-31
大家好,我公司将会有一个使用Groovy on Grails开发的项目,所以最近在学习它。在阅读API文档的时候看到一段代码,对其中的语法有一些疑问,Google搜索都没有找到相应的解释,才来这里麻烦大家。
API文档链接:
http://groovy.codehaus.org/gapi/groovy/text/SimpleTemplateEngine.html
代码:
def binding = [
     firstname : "Grace",
     lastname  : "Hopper",
     accepted  : true,
     title     : 'Groovy for COBOL programmers'
 ]
 def engine = new groovy.text.SimpleTemplateEngine()
 def text = '''\
 Dear <%= firstname %> $lastname,

 We <% if (accepted) print 'are pleased' else print 'regret' %> \
 to inform you that your paper entitled
 '$title' was ${ accepted ? 'accepted' : 'rejected' }.

 The conference committee.
 '''
 def template = engine.createTemplate(text).make(binding)
 println template.toString()


我的疑问在这里:
engine.createTemplate(text)
其中变量text是String类型,而SimpleTemplateEngine的createTemplate的方法签名是:
createTemplate(java.io.Reader reader)
即createTemplate接受Reader类型的参数,但以上代码中却接受了String类型的参数,并且没有进行类型转换,当然这段代码是可以运行的。
以我学习过的知识点(我以阅读〈Groovy入门经典〉为主)都不能解释其中的原理,所以我在怀疑是不是漏过了某些知识点。
我想知道Groovy在这里做了什么,基于哪个知识点,期待您的回复,谢谢。



dean_liu 2013-01-01
太大意了,原来是调用了父类TemplateEngine的方法createTemplate(java.lang.String templateText),问题完结。
Global site tag (gtag.js) - Google Analytics