Java类是否可以实现C ++接口(接口意味着完整的抽象类)? 我在哪里可以阅读更多信息?
答案 0 :(得分:2)
答案 1 :(得分:2)
不直接,不。但是,您可以创建该接口的C ++实现,该实现仅通过JNI委托给Java实现。有关详细信息,请参阅JNI Specification。
答案 2 :(得分:1)
不是一般意义上的,不是。在绝大多数情况下,C ++类在编译的二进制文件中不存在。
答案 3 :(得分:0)
除了JNI之外,还有另一项名为JNA的技术。它似乎更简单(不需要创建C / C ++存根代码)。
答案 4 :(得分:0)
计划在BridJ(一种支持C ++的JNA替代方案)中支持覆盖虚拟C ++方法,但它还没有。
更新: 从version 0.4开始, BridJ支持从Java实现C ++接口:
考虑以下C ++类:
#ifndef TEST_EXPORTS
#define TEST_EXPORTS
#endif
class TEST_EXPORTS TestClass {
public:
virtual int add(int a, int b);
};
您可以使用这些BridJ绑定将此类与Java绑定在一起:
public class TestClass extends CPPObject {
@Virtual(0)
public native int add(int a, int b);
};
并且能够非常自然地从Java继承C ++类:
TestClass test = new TestClass() {
@Override
public int add(int a, int b) {
return a + b;
}
};
答案 5 :(得分:-1)
Java类可以实现Java接口。 Java / C ++通信使用JNI完成。