gpt4 book ai didi

来自 JRuby 的 Java 方法自省(introspection)

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:55 26 4
gpt4 key购买 nike

有没有一种方法可以从 JRuby 对 Java 对象进行内省(introspection)并找出其 Java 领域的方法?喜欢什么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 等效程序:-)

至于你的基本内省(introspection),它只是有效™:

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 对象模型,所以我们实际上在这里得到 both Java 和 Ruby 方法,但是通过拒绝所有带有在 Java 中不常见或明显非法的字符的方法,我们得到一个相当干净的列表,其余的 Ruby 方法并不难发现。

关于来自 JRuby 的 Java 方法自省(introspection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com