0

私は、Java プログラムから C++ オブジェクト メソッドを呼び出すために JNI がどのように機能するかを学んでいます。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」というラベルの付いたボタンを配置します。ボタンが押されるgetValue()と、現在選択されている実装のメソッドが呼び出されます。その後、結果が電話スクリーンに印刷されます。いくつかのコード例を見たいです! ありがとうございました。

4

1 に答える 1

1

短い答えはノーです。JNI は C インターフェイスであり、C++、クラス、継承、ポリモーフィズムを認識しません。

より長い答えは: はい、C 関数を使用して、必要なコンストラクターを呼び出し、仮想メソッドを呼び出すことができます。

于 2012-09-30T22:02:48.610 に答える