[英]Is it possible to override a native method in a Java class in Android/dalvik?
我使用EasyMock對TestMe
類進行單元測試,其中一個方法(比如method(N n)
)需要一個N
類型的參數,它具有一個本機方法(比如nativeMethod()
)。
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
需要在某個時刻調用N.nativeMethod()
,而我遇到的問題是我的N的Easymock模擬對象無法覆蓋本機方法。 我沒有N級,但我可以用任何必要的方式重構TestMe
。
我決定創建自己的類FakeN extends N
,它覆蓋nativeMethod
什么都不做:
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
}
}
但是當編譯器沒有抱怨時,當我運行測試時,看起來N.nativeMethod()
是被調用的而不是FakeN
的版本。
我可以使用這里的解決方法嗎?
除非將它們聲明為final
,否則可以像其他任何方法一樣覆蓋本native
方法。 只要確保你打電話TestMe.method(N n)
與實例FakeN
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.