来自JRuby的Java方法内省

有没有办法从J Ruby内省Java对象并找出它的Java-land方法?像 http://github.com/oggy/looksee提供的那样,但对于Java.或者喜欢

(someobject).methods - 1.methods

这对于仅仅查看Java对象提供的内容而不是APIDoc来说是很好的.

解决方法

Looksee修补了解释器,这就是为什么它只适用于MRI和YARV,而不适用于JRuby,XRuby,IronRuby,Ruby.NET,Rubinius,tinyrb,RubyGoLightly,MacRuby,HotRuby,BlueRuby,Cardinal,MagLev,SmallRuby,Red Sun和所有其他实现.

所以,如果你愿意修补HotSpot,我相信你可以掀起一个类似Java的东西:-)

至于你的基本内省,它只是工作™:

require 'java'
java.lang.String.public_instance_methods.sort.reject {|m| m =~ /[_?!=~<>]/ }
# => [:bytes,:charat,:class,:clone,:codePointAt,:codePointBefore,# => :codePointCount,:com,:compareto,:comparetoIgnoreCase,:concat,# => :contains,:contentEquals,:display,:dup,:empty,:endsWith,:equals,# => :equalsIgnoreCase,:extend,:finalize,:freeze,:getBytes,:getChars,# => :getClass,:hash,:hashCode,:id,:indexOf,:initialize,:inspect,:intern,# => :isEmpty,:java,:javax,:lastIndexOf,:length,:matches,:method,# => :methods,:notify,:notifyAll,:offsetByCodePoints,:org,:regionMatches,# => :replace,:replaceAll,:replaceFirst,:send,:split,:startsWith,# => :subSequence,:substring,:synchronized,:taint,:tap,:tochararray,# => :toLowerCase,:toString,:toupperCase,:trim,:trust,:type,:untaint,# => :untrust,:wait]

当然,JRuby的一个要点是尽可能地集成Java和Ruby对象模型,所以我们实际上在这里获得了Java和Ruby方法,但是拒绝所有带有不寻常或非常非法字符的方法. Java,我们得到一个相当干净的列表,剩下的Ruby方法并不难发现.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...