我想从JRuby调用需要Java接口的Java API,而不是具体的类。 Java API使用java.lang.reflect.proxy来实现基于接口的功能。我找到了很多用JRuby实现java接口的例子。但是,我需要在JRuby中简单地定义一个java接口,而不是实现一个。我当然可以在Java中定义一个接口,并通过intf.java_class将其用作API的接口参数。但是,为方便起见,我希望能够直接从JRuby代码中定义接口。
更新 这是我想从JRuby调用的Java API:
public interface Query {
<T> Collection<T> execute(Class<T> intf, String sql, Object... args);
}
Java API要求intf参数是接口,而不是类。这是因为实现使用java.lang.reflect.proxy来提供可以通过提供的接口访问的数据对象的集合。 Java的java.lang.reflect.proxy只适用于接口。例如,假设我正在从表示日志语句的数据库中读取行。如果我从java调用它,我可以通过
定义我的数据public interface LogRecord {
int id();
Timestamp when();
String msg();
String level();
String logger();
String thread();
}
并将LogRecord.class作为Query.execute方法的第一个参数传递。
答案 0 :(得分:0)
我不认为可以这样做,因为Java类必须从ruby接口继承,显然Java类不能从JRuby类继承: