本文整理了Java中org.jruby.RubyClass.respondsTo
方法的一些代码示例,展示了RubyClass.respondsTo
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.respondsTo
方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称: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();
}
}
内容来源于网络,如有侵权,请联系作者删除!