Java Jni和C ++

时间:2012-09-30 17:21:28

标签: java android c++ android-ndk java-native-interface

我正在学习JNI如何从Java程序中调用C ++对象方法。我正在使用Android NDK / SDK编写应用程序。 我是JNI的初学者,我想知道是否支持多态。也就是说,假设我有一个简单的C ++类:

class HeyBoy
{
    public:
        virtual int    getValue()
        {
            return 10;
        }
};

class HeyBoyDerived1 : public HeyBoy
{
    public:
        int    getValue()
        {
            return 20;
        }
}

class HeyBoyDerived2 : public HeyBoy
{
    public:
        int    getValue()
        {
            return 30;
        }
}

在运行时,我希望用户选择要使用的实现(1或2),只需按下应用界面上的按钮即可。应该创建正确的C ++对象。 然后,我会放置一个带有“获取价值”标签的按钮。按下按钮时,应调用当前所选实现的getValue()方法。之后,结果将打印在手机屏幕上。 我真的很想看到一些代码示例! 谢谢。

1 个答案:

答案 0 :(得分:1)

简短的回答是否定的。 JNI是一个C接口,它不了解C ++,类,继承或多态。

答案越长:是的,C函数可用于调用所需的构造函数并调用虚方法。