javajni和C++; 我正在学习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++对象。 然后,我会放置一个标签为“Get Value”的按钮。按下按钮时,应调用当前选定实现的javajni和C++; 我正在学习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; } },java,android,c++,android-ndk,java-native-interface,Java,Android,C++,Android Ndk,Java Native Interface,在运行时,我希望用户只需按下应用程序界面上的一个按钮,就可以选择要使用的实现(1或2)。应该创建正确的C++对象。 然后,我会放置一个标签为“Get Value”的按钮。按下按钮时,应调用当前选定实现的getValue()方法。之后,结果将打印在手机屏幕上。 我真的很想看到一些代码示例! 谢谢。 简短的回答是:不,JNI是C接口,它不知道C++、类、继承或多态性。 较长的答案是:是的,C函数可以用来调用所需的构造函数和调用虚拟方法。从阅读JNI开始。一旦你谈到函数命名约定的部分,你就不会再有这个
getValue()
方法。之后,结果将打印在手机屏幕上。
我真的很想看到一些代码示例!
谢谢。 简短的回答是:不,JNI是C接口,它不知道C++、类、继承或多态性。
较长的答案是:是的,C函数可以用来调用所需的构造函数和调用虚拟方法。从阅读JNI开始。一旦你谈到函数命名约定的部分,你就不会再有这个问题了。我们可以很容易地用JNI实现这一点,它本身就使用JNI。