Java类可以实现C ++接口吗?

时间:2010-04-14 16:00:51

标签: java c++ interface

Java类是否可以实现C ++接口(接口意味着完整的抽象类)? 我在哪里可以阅读更多信息?

6 个答案:

答案 0 :(得分:2)

是的,您必须使用JNI

来自Sun / Oracle的

Here's教程

答案 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完成。