Можно ли переопределить нативный метод в классе Java в Android / dalvik?

Я юнит тестирую классTestMe используя EasyMock, и один из его методов (скажем,method(N n)) ожидает параметр типаN который имеет нативный метод (скажем,nativeMethod()).

class TestMe {
    void method(N n) {
        // Do stuff

        n.nativeMethod();

        // Do more stuff
    }
}

method() должен вызватьN.nativeMethod() в какой-то момент, и проблема, с которой я сталкиваюсь, заключается в том, что мой фиктивный объект Easymock для N не может переопределить собственный метод. Я не владею классом 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версия с.

Есть ли обходной путь, который я могу использовать?

Ответы на вопрос(1)

Решение Вопроса

native методы могут быть переопределены, как и любые другие методы, если они не объявленыfinal, Просто убедитесь, что вы звонитеTestMe.method(N n) с экземпляромFakeN.

 scorpiodawg15 мая 2013 г., 01:09
Оказывается, что нативные методы могут быть переопределены не-нативными, и наоборот.native кажется, не является частью подписи.
 scorpiodawg08 июн. 2012 г., 19:51
Это то, что я думал из комментариев наthis page но, похоже, это не сработало. Я вернусь и проверим, не испортил ли я что-то.

Ваш ответ на вопрос