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

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

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

RubyClass.respondsTo介绍

暂无

代码示例

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

@Override
public Object toJava(Class klass) {
  Class returnClass = null;
  if (klass == Class.class) {
    // Class requested; try java_class or else return nearest reified class
    if (respondsTo("java_class")) {
      return callMethod("java_class").toJava(klass);
    } else {
      for (RubyClass current = this; current != null; current = current.getSuperClass()) {
        returnClass = current.getReifiedClass();
        if (returnClass != null) return returnClass;
      }
    }
    // should never fall through, since RubyObject has a reified class
  }
  if (klass.isAssignableFrom(RubyClass.class)) {
    // they're asking for something RubyClass extends, give them that
    return this;
  }
  return super.toJava(klass);
}

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

@Override
public Object toJava(Class klass) {
  Class returnClass = null;
  if (klass == Class.class) {
    // Class requested; try java_class or else return nearest reified class
    if (respondsTo("java_class")) {
      return callMethod("java_class").toJava(klass);
    } else {
      for (RubyClass current = this; current != null; current = current.getSuperClass()) {
        returnClass = current.getReifiedClass();
        if (returnClass != null) return returnClass;
      }
    }
    // should never fall through, since RubyObject has a reified class
  }
  if (klass.isAssignableFrom(RubyClass.class)) {
    // they're asking for something RubyClass extends, give them that
    return this;
  }
  return super.toJava(klass);
}

代码示例来源:origin: org.jenkins-ci/jruby-xstream

public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
  RubyBasicObject o = (RubyBasicObject) source;
  RubyClass t = o.getType();
  writer.addAttribute("ruby-class", t.getName());
  Ruby runtime = o.getRuntime();
  resolver.marshal(o,writer,context);
  boolean hasTransient = t.respondsTo("transient?");
  for (Variable v : o.getVariableList()) {
    Object value = v.getValue();
    if (value ==null)   continue;
    String vname = v.getName().substring(1);    // cut off the first '@'
    if (hasTransient && t.callMethod("transient?", runtime.newString(vname)).isTrue())
      continue;   // transient field
    writer.startNode(vname);
    if (!(value instanceof IRubyObject)) {
      // if a ruby object refers to another ruby object, just rely on @ruby-class
      // and we don't need @class
      Class<?> valueType = value.getClass();
      String serializedClassName = mapper.serializedClass(valueType);
      writer.addAttribute("class", serializedClassName);
    } else {
      // TODO: use the type annotation to try to omit this whenever we can
    }
    context.convertAnother(value);
    writer.endNode();
  }
}

相关文章

微信公众号

最新文章

更多

RubyClass类方法