13.Groovy元编程源码分析

2021SC@SDUSC

13.Groovy元编程源码分析

元编程相关的类呢,就都在lang包中。

首先,编程我们都知道是创建一些类,然后为类去写一些属性和方法,那元代表什么呢,其实,元就是一个特殊的属性,我们到源码里来看一下是那个属性。

public interface GroovyObject {
   
  Object invokeMethod(String var1, Object var2);

  Object getProperty(String var1);

  void setProperty(String var1, Object var2);

  MetaClass getMetaClass();

  void setMetaClass(MetaClass var1);
}

这个类是Groovy最最基础的类,所有的类都实现了这一接口,我们可以看到一个getMetaClass和setMetaClass ,而MetaClass就是我们就所的元,通过操作MetaClass,就可以动态的在运行时,去改变类中的属性和方法所以我们可以得出结论,groovy中的所有类,都可以为其动态的去操作。因为这是个接口,下面我们看一下他的最重要的一个实现类:

public abstract class GroovyObjectSupport implements GroovyObject {
   
  //所有类的MetaClass都是通过InvokerHelper获取到。
  private transient MetaClass metaClass = InvokerHelper.getMetaClass(this.getClass());

  public GroovyObjectSupport() {
   
  }

 //从元类中获取属性
  public Object getProperty(String property) {
   
    return this.getMetaClass().getProperty(this, property);
  }
//为元类设置属性
  public void setProperty(String property, Object newValue) {
   
    this.getMetaClass()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值