1

我有一个继承自 java 类(例如 java.util.HashMap)的 JRuby 类。第 3 方 java 代码正在调用一个反射方法,就像getDeclaredMethods()我的类的 java 实例的getClass()类型一样。我需要将在我的 ruby​​ 类 (HM) 中定义的方法推送到这些“声明的方法”中,然后才能将其转换为 java,以便它们出现在第 3 方 java 类中。有人知道方法吗?这是我的 jruby 代码:

require 'java'
class HM < java.util.HashMap; end

hm = HM.new
puts hm.getClass() 
     # => org.jruby.proxy.java.util.HashMap$ProxyO

# a third party will make the following call:
puts hm.getClass().getDeclaredMethods().count 
     # => 2 methods

HM.class_eval do ; def value_at_key(key); return self[key]; end; end

puts hm.getClass().getDeclaredMethods().count 
     # => still 2 methods
4

1 回答 1

1

也许这个错误目前正在阻止你?http://jira.codehaus.org/browse/JRUBY-6105

创建java类有两种方法https://github.com/jruby/jruby/wiki/GeneratingJavaClasses

我已经尝试了两种方法,并且按照错误中的描述得到了 nil 。

这个问题类似于我可以在ruby中定义一个Java子类,然后在Java中实例化它吗?

于 2013-08-22T19:42:44.920 回答