0 0

Groovy类型转换的疑问15

大家好,我公司将会有一个使用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在这里做了什么,基于哪个知识点,期待您的回复,谢谢。



问题补充:原来是调用了父类TemplateEngine的方法createTemplate(java.lang.String templateText),提问取消。
2012年12月31日 23:40
目前还没有答案

相关推荐

    Android-从Groovy转换为KotlinDSLforGradle专注于Android

    7. **Kotlin转换工具**:为了帮助开发者从Groovy脚本平滑过渡到Kotlin DSL,有一些工具可以辅助转换,例如 bernaferrari的GradleKotlinConverter项目(可能就是压缩包中的内容)。这些工具可以帮助自动化部分转换...

    groovy

    3. 数据处理:Groovy可以方便地处理XML、JSON等数据格式,常用于数据转换和解析。 4. 测试:Spock测试框架使用Groovy编写,提供了富有表达力的测试语句,简化了测试代码的编写。 5. 容器管理:在Apache Kafka、...

    apache-groovy-sdk-4.0.1下载

    解释器允许你运行Groovy脚本,而编译器则可以将Groovy代码转换成Java字节码,使得Groovy程序能在Java虚拟机(JVM)上运行。这对于Java开发者来说是个巨大的优势,因为他们可以无缝地将Groovy集成到现有的Java项目中...

    groovy in action 中文版 2017.11

    自动装箱和拆箱机制让基本数据类型与它们对应的包装类型之间的转换变得透明,从而让代码更简洁易读。Groovy还提供了重载操作符的能力,允许程序员为基本数据类型或自定义类型编写新的操作符行为。在字符串处理方面,...

    groovy学习

    - 使用`@GrailsCompileStatic`注解可以将Groovy类转换为静态类型的类,以获得更好的性能和类型安全。 - 在Spring Boot项目中,Groovy可以用来编写控制器、服务、仓库等组件,简化开发流程。 3. **Gradle构建工具*...

    groovy-2.3.6-installer

    Groovy 2.3系列引入了类型推断,使得代码更加可读和易于维护,同时也提高了性能。此外,这一版本还包含了对Java 8的初步支持,尽管不是全面的,但已经允许开发者利用Java 8的一些新特性,如lambda表达式。 "groovy-...

    Groovy入门教程[参照].pdf

    5. 一切皆对象:Groovy 对于对象是什么类型并不关心,一个变量的类型在运行中随时可以改变。 Groovy 的优点 1. 简洁的语法:Groovy 语法简洁,减少了代码的长度,提高了编程效率。 2. 灵活性强:Groovy 是一种动态...

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    groovy入门经典,groovyeclipse 插件

    Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速开发、脚本编写以及构建自动化等任务的理想选择。 GroovyEclipse是一款强大的Eclipse插件,...

    Java调用Groovy,实时动态加载数据库groovy脚本

    Java作为一种广泛使用的静态类型编程语言,有时候可能无法满足所有需求,特别是在处理动态代码执行和热部署时。此时,Groovy这种基于JVM的动态语言就发挥了重要作用。本文将详细讲解如何在Java应用程序中调用Groovy...

    Z2-Groovy in Action.pdf

    这为Groovy的编程提供了很大的灵活性,例如可以轻松实现事件监听、回调函数、数据转换等操作。 8. Groovy的类型可选性 Groovy的类型系统是动态的,允许开发者在编译时省略类型声明,这使得快速开发更加简单。同时...

    groovy速查手册

    Groovy支持多种集合数据类型,如列表(List)、映射(Map)等,这些数据类型的使用方式与Java相似,但Groovy提供了更多的语法糖,使得代码更加简洁易读。 #### 六、元编程 Groovy强大的元编程特性使得开发者能够...

    Groovy Script 入门

    2. **动态类型**:Groovy采用了动态类型系统,变量无需显式声明类型。 3. **闭包支持**:闭包是Groovy的一个强大特性,它可以像对象一样被传递和存储,用于实现高级编程模式。 4. **元编程**:Groovy支持元编程,...

    Grails&Groovy学习资料

    3. 隐式类型转换:Groovy可以自动将字符串转换为数字,简化了常见的类型转换操作。 4. GString:Groovy的GString(类似于Java的String)支持模板语法,使字符串拼接更直观。 5. 极简的语法:Groovy的语法比Java更加...

    apache-groovy-sdk-3.0.6.zip

    1. **Groovy编译器**:SDK中的`groovy-3.0.6`目录可能包含了Groovy编译器,它是将Groovy源代码转换成Java字节码的工具,使得Groovy程序能够在Java平台上运行。 2. **GroovyShell和GroovyConsole**:这两个工具允许...

    Groovy语法系列教程之布尔(五).pdf

    最后,本教程还提到了与布尔相关的其他Groovy特性,比如类型强制转换、扩展的字符串操作、灵活的数组和集合操作等。在Groovy中,字符串可以用单引号、双引号甚至三引号来定义,而Groovy对字符串的处理也比Java更为...

    groovy-sdk-4.0.3

    1. **Groovy解释器**:这是执行Groovy代码的基础,它将Groovy源代码转换为字节码并运行在Java虚拟机(JVM)上。 2. **编译器**:Groovy SDK提供了一个强大的编译器,可以将Groovy源代码编译成Java字节码,使得...

Global site tag (gtag.js) - Google Analytics