Genéricos Java e JNI

É possível chamar uma função CPP nativa usando JNI que aceita argumentos genéricos? Algo como o seguinte:

public static native <T, U, V> T foo(U u, V v);

E então chame assim:

//class Foo, class Bar, class Baz are already defined;
Foo f = foo(new Bar(), new Baz());

Alguém pode me fornecer uma amostra que está realmente fazendo isso ou algum tutorial na rede que faz isso? Estou perguntando, porque na minha função CPN JNI (chamada pela JVM), recebo um erro de link não satisfeito.

Código CPP a seguir:

JNIEXPORT jobject JNICALL Java_Processor_process (JNIEnv *env, jclass processor_class, jobject obj1, jobject obj2)
{
    jclass bar_class = env->FindClass("Bar");
    jmethodID getFooMethod = env->GetMethodID(bar_class, "getFoo", "()Ljava/lang/Object;");
//getFoo() is defined as `public Foo getFoo();` in Bar.java
    return env->CallObjectMethod(obj1, getFooMethod);
}

EDITAR:

Eu tentei modificar o código, mas agora estou recebendo NoSuchMethodError:

Código Java:

public static native <U, V> String foo(U u, V v);
//...
String str = foo(new Bar(), new Baz());

Código CPP:

JNIEXPORT jstring JNICALL Java_Processor_process (JNIEnv *env, jclass processor_class, jobject obj1, jobject obj2)
{
    jclass bar_class = env->FindClass("Bar");
    jmethodID getFooMethod = env->GetMethodID(bar_class, "getFoo", "()Ljava/lang/String;");
    //getFoo() is now defined as `public String getFoo();` in Bar.java
    return env->CallObjectMethod(obj1, getFooMethod);
}

Isso significa que a JNI não tem suporte para genéricos ou estou perdendo alguma coisa?

questionAnswers(2)

yourAnswerToTheQuestion