[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),问题完结。
|