org.jruby.RubyClass.getSingletonClassClone()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(3.2k)|赞(0)|评价(0)|浏览(59)

本文整理了Java中org.jruby.RubyClass.getSingletonClassClone方法的一些代码示例,展示了RubyClass.getSingletonClassClone的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.getSingletonClassClone方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称:RubyClass
方法名:getSingletonClassClone

RubyClass.getSingletonClassClone介绍

暂无

代码示例

代码示例来源:origin: org.jruby/jruby-complete

/** rb_singleton_class_clone
 *
 * Will make sure that if the current objects class is a
 * singleton, it will get cloned.
 *
 * @return either a real class, or a clone of the current singleton class
 */
protected RubyClass getSingletonClassCloneAndAttach(RubyBasicObject attach) {
  RubyClass klass = getMetaClass();
  if (!klass.isSingleton()) {
    return klass;
  }
  MetaClass clone = new MetaClass(getRuntime(), klass.getSuperClass(), attach);
  clone.flags = klass.flags;
  if (this instanceof RubyClass) {
    clone.setMetaClass(clone);
  } else {
    clone.setMetaClass(klass.getSingletonClassClone());
  }
  if (klass.hasVariables()) clone.syncVariables(klass);
  clone.syncConstants(klass);
  klass.cloneMethods(clone);
  ((MetaClass) clone.getMetaClass()).setAttached(clone);
  return clone;
}

代码示例来源:origin: org.jruby/jruby-core

/** rb_singleton_class_clone
 *
 * Will make sure that if the current objects class is a
 * singleton, it will get cloned.
 *
 * @return either a real class, or a clone of the current singleton class
 */
protected RubyClass getSingletonClassCloneAndAttach(RubyBasicObject attach) {
  RubyClass klass = getMetaClass();
  if (!klass.isSingleton()) {
    return klass;
  }
  MetaClass clone = new MetaClass(getRuntime(), klass.getSuperClass(), attach);
  clone.flags = klass.flags;
  if (this instanceof RubyClass) {
    clone.setMetaClass(clone);
  } else {
    clone.setMetaClass(klass.getSingletonClassClone());
  }
  if (klass.hasVariables()) clone.syncVariables(klass);
  clone.syncConstants(klass);
  klass.cloneMethods(clone);
  ((MetaClass) clone.getMetaClass()).setAttached(clone);
  return clone;
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/** rb_singleton_class_clone
 *
 * Will make sure that if the current objects class is a
 * singleton, it will get cloned.
 *
 * @return either a real class, or a clone of the current singleton class
 */
protected RubyClass getSingletonClassClone() {
  RubyClass klass = getMetaClass();
  if (!klass.isSingleton()) {
    return klass;
  }
  MetaClass clone = new MetaClass(getRuntime(), klass.getSuperClass(), ((MetaClass) klass).getAttached());
  clone.flags = flags;
  if (this instanceof RubyClass) {
    clone.setMetaClass(clone);
  } else {
    clone.setMetaClass(klass.getSingletonClassClone());
  }
  if (klass.hasVariables()) {
    clone.syncVariables(klass);
  }
  clone.syncConstants(klass);
  klass.cloneMethods(clone);
  ((MetaClass) clone.getMetaClass()).setAttached(clone);
  return clone;
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/** rb_singleton_class_clone
 *
 * Will make sure that if the current objects class is a
 * singleton, it will get cloned.
 *
 * @return either a real class, or a clone of the current singleton class
 */
protected RubyClass getSingletonClassClone() {
  RubyClass klass = getMetaClass();
  if (!klass.isSingleton()) {
    return klass;
  }
  MetaClass clone = new MetaClass(getRuntime(), klass.getSuperClass(), ((MetaClass) klass).getAttached());
  clone.flags = flags;
  if (this instanceof RubyClass) {
    clone.setMetaClass(clone);
  } else {
    clone.setMetaClass(klass.getSingletonClassClone());
  }
  if (klass.hasVariables()) {
    clone.syncVariables(klass);
  }
  clone.syncConstants(klass);
  klass.cloneMethods(clone);
  ((MetaClass) clone.getMetaClass()).setAttached(clone);
  return clone;
}

相关文章

微信公众号

最新文章

更多

RubyClass类方法