Groovy 语言模型序

本文探讨了Groovy如何在Java基础上扩展功能,其语言特性与底层模型密切相关。GroovyObject接口是所有Groovy类的基础,提供invokeMethod等关键方法。Script类结合Binding对象实现动态绑定,允许从上下文环境中读取信息。MetaClass系统构成了Groovy的动态特性,允许动态添加方法和属性,如MetaClassImpl和MutableMetaClass。文章后续将深入讨论Binding、MetaMethod和MetaProperty。
摘要由CSDN通过智能技术生成

    很好奇GROOVY是如何在JAVA语言的基础上平添了如此之多的强大功能和语言特性。翻看了一些GROOVY的源代码。语言的特性,离不开语言底层模型的支持,在构建好自己的语言模型之后,接下来需要的就是形式化的东西,也就是语法,遵循语法编写代码,以用编译器构建出既定的语言模型体系下的字节码,然后再JVM机上无差别于JAVA代码一样运行,我理解的Groovy就是这样。


    GROOVY可以作为脚本来运行,即Script对象,也可以作为类似JAVA的Class来运行,不管是以Script方式运行还是说作为Class方式。Groovy编译之后的类都是统一实现了GroovyObject接口。GroovyOjeject定义了invokeMethod方法,定义了属性的GETTER和SETTER方法,定义了元类的GETTER和SETTER方法等利用GROOVY语言特性的基本方法。GroovyOjeject为什么是接口不是类,原因在于Groovy最终编译成为java对象,JAVA对象不支持多继承,如果GroovyOjeject声明为类,而Groovy的class也必须继承直接或者间接继承自GroovyObject,这样,声明Groovy类就不能继承自其它的JAVA类了,这样就直接影响了GROOVY与JAVA的兼容性。


    GROOVY语言模型中GroovyOjeject不是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值