微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自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方法并不难发现.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐