前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Groovy里的运行时元数据编程(metata programming)

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

作者头像
Jerry Wang
发布2020-06-28 11:42:58
4330
发布2020-06-28 11:42:58
举报

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类:

代码语言:javascript
复制
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的方法:

代码语言:javascript
复制
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()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档