专栏首页Jerry的SAP技术分享Groovy里的运行时元数据编程(metata programming)

Groovy里的运行时元数据编程(metata programming)

POGO - A Groovy object whose class is written in Groovy. It extends java.lang.Object and implements the groovy.lang.GroovyObject interface by default.

Plain old Groovy object,用Groovy语言编写的原生类,继承自Java的java.lang.Object,实现了groovy.lang.GroovyObject接口。

GroovyObject接口实现的源代码:

执行结果:

结果表明,一个Groovy类实例试图调用一个POGO上没有定义的方法之时,POGO上被override的方法invokeMethod(在接口GroovyObject中声明)会自动被调用。

再看一个原生的Java类:

class JavaPerson{
	String name;
	public JavaPerson(String name) {
		this.name = name;
	}
	public void hello() {
		System.out.println("Hello: " + this.name);
	}
}

JavaPerson jerry = new JavaPerson("Jerry");
jerry.hello();

try {
jerry.hello2();
} catch(Exception e) {
	System.out.println("error: " + e.getMessage());
}

try代码块里会触发异常,因为JavaPerson类并没有定义名为hello2的方法:

error: No signature of method: jerry.JavaPerson.hello2() is applicable for argument types: () values: []
Possible solutions: hello(), sleep(long), sleep(long, groovy.lang.Closure), collect(), every()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog....

    Jerry Wang
  • SAP Commerce Extension Module

    Extension modules are structural elements of an extension. 类似ABAP开发包的概念。

    Jerry Wang
  • 三种在BSP component view里打开新页面的方式

    Jerry Wang
  • 推荐收藏 | 10道XGBoost面试题送给你

    XGBoost的威名想必大家都有所耳闻,它不仅是数据科学竞赛神器,在工业界中也被广泛地使用。本文给大家分享珍藏了多年的XGBoost高频面试题,希望能够加深大家...

    Sam Gor
  • Swift3.0 - 检测API

    酷走天涯
  • 如何正确运用异步编程技术

    4.1、既然异步可以大大提供应用程序的响应能力?那么ASP.NET MVC 如果全部用异步控制器(Async Controller),会有什么效果?会成为高吞吐...

    跟着阿笨一起玩NET
  • 冲击亚马逊,Google 计划让自动驾驶卡车送快递?

    据 Quartz 报道,Google 目前已经获得了一项运送快递的自动驾驶卡车技术专利。届时,获得专利的卡车上将装满安全小隔间,用户只需要通过安全码和信用卡就可...

    新智元
  • linux下快速列出局域网中所有主机名(计算机名)的脚本

    最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本

    砸漏
  • vue中对el-dialog宽度调整方法之一二

    vue时,会用到el-dialog做为弹窗,但这个弹窗的宽度默认为50%.因项目中需要调整弹偿的宽度,需要设置其属性。 尝试过程如下:

    星痕
  • 如何给个人网站添加免费的SSL

    最近站点总是被劫持,劫持什么意思喃?按照官方的说法就是所谓的网站劫持就是打开一个网站,出现一个不属于网站范畴的广告,或者是无法跳转到某个不属于这个范畴的网页。 ...

    叉叉敌

扫码关注云+社区

领取腾讯云代金券