S
Spacerat
Gast
Ist schon etwas länger her, da hat man mir im Forum gesagt, "private final" sei für Methoden überflüssig. Das hab' ich mal so hingenommen. Nicht zuletzt, weil sich die folgenden beiden Klassen fehlerlos (ok, 2 Warnungen kommen) kompilieren lassen.
In der DLL sieht die "native"-Method so aus:
Die Frage ist nun, welchen der beiden Sätze man zu lesen bekommt. HINT: Die Antwort rät zur Vorsicht!
Java:
public class ExtendMe
{
static
{
System.loadLibrary("ExtendMe");
}
private final void privateFinalMethod()
{
System.out.println("You are in ExtendMe.class");
}
public final native void doCallback();
}
Java:
public class Extension
extends ExtendMe
{
private final void privateFinalMethod()
{
System.out.println("You are in Extension.class");
}
public static void main(String[] args)
{
new Extension().doCallback();
}
}
Code:
JNIEXPORT void JNICALL Java_ExtendMe_doCallback
(JNIEnv * pEnv, jobject obj)
{
jclass clazz = pEnv->GetObjectClass(obj);
jmethodID mid = pEnv->GetMethodID(clazz, "privateFinalMethod", "()V");
pEnv->CallVoidMethod(obj, mid);
}