`
叶落黄昏
  • 浏览: 17597 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Groovy基础与实践——MetaClass何时创建

阅读更多

MetaClassRegistry 维护着class和meta=class之间的对应关系。那么这个映射表中键值对又是在什么时候添加的喃?

有两种情况,比如我们的代码中主动地设置,比如我们使用了ExpandoMetaClass来扩展java类,另外一种情况是就是Groovy本身的Class是何时与其MetaClass挂钩的?

之前有猜想过,这种映射关系是在加载了groovy的Class之后,也就是装载了groovy源文件分析出class之后便创建了其对应的 metaclass的映射。但是我翻了Groovy 源码没有发现在加载class的时候进行metaclass设置。有一段时间没有找到痕迹,今天突然猜想莫非是在获取的时候做了设置,这是很多缓存策略的 实现方法,只有在第一次访问的时候才去正在设置。

代码还真是隐藏得深入,从GroovyObjectSupport的getMetaClass入手,经过MetaClassRegistry的包 装,最终是从ClassInfo的内部类ClassInfoSet中获得的。ClassInfoSet最终继承自 AbstractConcurrentMap,AbstractConcurrentMap的getOrPut方法便是在没有的情况下创建一个值并返回。 也就是说第一次寻找一个Groovy class 的metaclass的时候找不到,便会创建一个与之对应。只不过这个创建和放置的过程隐藏在了基类中。

 (下一篇介绍MetaClass的invokeMethod方法的实现)

分享到:
评论

相关推荐

    Groovy need not rails——介绍自己写的一个基于groovy的框架,Webx

    Groovy是一种动态、灵活的编程语言,它设计用于Java虚拟机(JVM)上运行,并且与Java代码无缝集成。Groovy的语法简洁且富有表达力,使得开发过程更为高效。在Java生态系统中,Groovy常被用于构建脚本、自动化任务、...

    Groovy轻松入门——Grails实战基础篇

    ### Groovy轻松入门——Grails实战基础篇 #### 搭建Grails环境及创建Grails Demo程序 **Groovy**是一种面向对象的编程语言,它运行于Java平台上,能够与Java代码无缝集成。而**Grails**则是一款基于Groovy的高性能...

    groovy基础语法.pdf

    这些知识点是对Groovy基础语法的一个大致概述,而文件中的内容则展示了如何在实际代码中应用这些语法。由于文件内容有些混乱,并且含有重复的词汇和一些扫描错误,以上总结的知识点基于对Groovy语言的理解和部分可...

    groovy基础教程源码,很全面

    Groovy基础教程源码涵盖了Groovy语言的各个方面,是学习和理解Groovy语言的宝贵资源。下面将详细阐述Groovy的一些核心知识点。 1. **动态类型与静态类型**: Groovy支持动态类型,这意味着变量在声明时无需指定...

    groovy动态方法

    元编程在Groovy中主要通过`MetaClass`接口和`ExpandoMetaClass`类来实现。 `MetaClass`是Groovy中的一个核心概念,它是每个Groovy对象的元数据容器,存储了对象的方法、属性以及它们的调用规则。通过`MetaClass`,...

    groovy基础语法.doc

    Groovy 基础语法 Groovy 是一种基于 Java 平台的高级编程语言,它融合了 Ruby、Python 和 Smalltalk 的一些最有用的功能,同时保留了基于 Java 语言的核心语法。Groovy 提供了更简单的替代语言,且几乎不需要学习...

    Groovy MOP

    1. **MetaClass**: MetaClass是Groovy MOP的核心,它是任何Groovy对象的元数据容器。MetaClass存储了对象的方法、属性以及如何调用这些方法和属性的信息。你可以为任何对象或类动态地替换其MetaClass,从而改变其...

    groovy创建xml文件

    groovy 创建xml,并生成xml文件的代码

    Groovy学习资料

    最后,学习Groovy的最佳实践,如如何有效地利用元编程,何时使用静态类型以提高性能,以及如何编写易于理解和维护的代码,这些都是提升Groovy开发技能的重要部分。 通过深入学习和实践这份"Groovy学习资料"中的内容...

    最新 groovy开发包

    书中可能涵盖Groovy的基础概念、进阶特性、最佳实践,以及如何在实际项目中应用Groovy。 总的来说,这个最新的Groovy开发包是学习和精通Groovy的宝贵资源,无论是为了个人兴趣还是职业发展,都能从中受益匪浅。通过...

    Show Your ToolBox——锋利的groovy

    《Show Your ToolBox——锋利的Groovy》 在IT领域,工具的选择和使用往往直接影响到工作效率和项目质量。本文将深入探讨Groovy这门强大的动态编程语言,它以其灵活性和与Java的紧密集成,成为了许多开发者的得力...

    groovy programming(2006.12).pdf

    例如,书中可能涵盖了如何使用AST(抽象语法树)转换来修改代码的执行过程,以及如何利用元类(MetaClass)来自定义类的行为。 #### 4. Groovy与Java的集成 由于Groovy与Java的高度兼容性,本书特别强调了如何在Java...

    Groovy in Action源代码

    1. **基础语法**:源代码中包含了Groovy的基础语法示例,如变量声明、流程控制(if-else、switch-case、for、while循环)、函数定义和调用、类与对象的创建等。这些例子可以帮助初学者快速掌握Groovy的基本编程结构...

    Beginning Groovy and Grails, From Novice to Professional

    - **面向对象编程**:Groovy不仅完全兼容Java的对象模型,还引入了许多增强特性,比如元类(MetaClass)、代理(Delegation)等。 - **元编程**:Groovy的元编程能力非常强大,可以通过反射、AST转换等方式在运行时...

    eclipse安装groovy插件的步骤

    如果在新建项目选项中出现了与 Groovy 相关的选择项,如 “Groovy Project” 或 “Groovy Class”,则说明 Groovy 插件已成功安装。 #### 二、Eclipse 中 Groovy 的入门使用 接下来,我们来详细介绍如何在 Eclipse...

    Groovy Script 入门

    1. **创建Groovy文件**:使用文本编辑器创建一个名为hello.groovy的文件,并输入以上代码。 2. **执行脚本**:打开命令行窗口,导航至包含hello.groovy文件的目录,然后输入`groovy hello`来运行脚本。 #### 四、...

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

    3. 加载并执行Groovy脚本:通过GroovyClassLoader的`parseClass()`方法解析Groovy源码,然后使用`newInstance()`方法创建脚本实例,最后通过`invokeMethod()`方法执行脚本中的方法。 在Java与MongoDB的交互中,我们...

    Groovy程序设计与实践1

    10. **领域特定语言(DSL)**:Groovy的DSL能力使其成为创建定制语言的利器,可以轻松地为特定应用领域创建简洁的表示形式。 通过学习以上各个方面,你可以逐步掌握Groovy并利用它提高开发效率,无论是编写简单的...

    Groovy学习笔记.pdf

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一...通过学习和实践,你可以提高开发效率,创建出更具灵活性和可维护性的代码。这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。

Global site tag (gtag.js) - Google Analytics