2012-09-30 75 views
0

我在學習JNI是如何工作的,用於從Java程序調用C++對象方法的過程。我正在使用Android NDK/SDK編寫應用程序。 我是JNI的初學者,我想知道是否支持多態。也就是說,假設我有一個簡單的C++類:JNI的Java和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'的按鈕。當按下按鈕時,應該調用當前選定實現的getValue()方法。之後,結果將打印在手機屏幕上。 我真的很想看到一些代碼示例! 謝謝。

+1

首先閱讀JNI。一旦你瞭解了關於函數命名約定的部分,你就不會再有這個問題了。 –

+0

我們可以使用[JavaCPP](http://code.google.com/p/javacpp/)輕鬆實現,它本身使用JNI。 –

+0

哈哈,爲什麼這個下降? – user576796

回答

1

簡短的回答是否定的。 JNI是一個C接口,它不知道C++,類,繼承或多態。

較長的答案是:是的,C函數可以用來調用所需的構造函數並調用虛擬方法。