加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

来自JRuby的Java方法内省

发布时间:2020-12-17 01:44:21 所属栏目:百科 来源:网络整理
导读:有没有办法从J Ruby内省Java对象并找出它的Java-land方法?像 http://github.com/oggy/looksee提供的那样,但对于Java.或者喜欢 (someobject).methods - 1.methods 这对于仅仅查看Java对象提供的内容而不是APIDoc来说是很好的. 解决方法 Looksee修补了解释器,
有没有办法从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方法并不难发现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读