मैं ईज़ीमोक का उपयोग कर कक्षा TestMe
कक्षा का परीक्षण कर रहा हूं, और इसकी विधियों में से एक (method(N n)
कहें) N
के पैरामीटर की अपेक्षा करता है जिसमें मूल विधि है (nativeMethod()
कहें)।क्या एंड्रॉइड/दल्विक में जावा क्लास में मूल विधि को ओवरराइड करना संभव है?
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
method()
कुछ बिंदु पर N.nativeMethod()
आह्वान करने के लिए जरूरत है, और समस्या मैं आ रही है कि एन के लिए मेरे Easymock नकली वस्तु देशी विधि ओवरराइड करने में असमर्थ है। मेरे पास कक्षा एन का स्वामित्व नहीं है लेकिन मैं किसी भी तरह से 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
एस संस्करण।
क्या यहां कोई कामकाज है जिसका मैं उपयोग कर सकता हूं?
यही है कि मैंने [इस पृष्ठ] पर टिप्पणियों से सोचा [http://www.coderanch.com/t/380733/java/java/Overriding-Native-Method-java-io) लेकिन ऐसा प्रतीत नहीं हुआ काम। मैं वापस जाऊंगा और यह देखने के लिए जांच करूंगा कि मैंने कुछ गड़बड़ कर ली है या नहीं। – scorpiodawg
यह पता चला है कि मूल विधियों को गैर-मूल द्वारा ओवरराइड किया जा सकता है, और इसके विपरीत भी। 'मूल' हस्ताक्षर का हिस्सा नहीं प्रतीत होता है। – scorpiodawg