Ist es möglich, eine native Methode in einer Java-Klasse in Android / Dalvik zu überschreiben?
Ich teste eine KlasseTestMe
mit EasyMock und einer seiner Methoden (sagen wirmethod(N n)
) erwartet einen Parameter vom TypN
das hat eine native Methode (sagen wirnativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
muss aufrufenN.nativeMethod()
Irgendwann ist das Problem, dass mein Easymock-Mock-Objekt für N die native Methode nicht überschreiben kann. Ich besitze keine Klasse N, kann aber umgestaltenTestMe
in irgendeiner Weise notwendig.
Ich beschloss, meine eigene Klasse zu machenFakeN extends N
welche überschreibtnativeMethod
nichts tun:
class FakeN extends N {
FakeN(int pointer) {
super(pointer);
}
@Override
public void nativeMethod(Object o) {
// super.nativeMethod() is an actual native method defined as:
// public native void nativeMethod(Object o)
//
// IGNORE
}
}
Aber während der Compiler sich nicht beschwert, scheint es so, als würde ich den Test ausführenN.nativeMethod()
wird angerufen und nichtFakeN
s Version.
Gibt es hier eine Problemumgehung, die ich verwenden kann?