में प्रॉक्सी में बहु-धर्मार्थ विधियों को ओवरराइड करना मेरे पास एक जावा क्लास है जिसमें 2 विधियां हैं लेकिन अलग-अलग arities (कोई कोई तर्क नहीं लेता है, अन्य 1 तर्क लेता है)। मैं एक प्रॉक्सी बनाता हूं जो इन तरीकों को ओवरराइड करता है। समस्या यह है कि अगर इस जावा वर्ग से नो-एर्ग विधि को बुलाया जाता है - आधार कार्यान्वयन को प्रॉक्सी के बजाय बुलाया जाता है। लेकिन अगर मैं सीधे ओबीजे पर नो-एर्ग विधि कहता हूं - सही प्रॉक्सी विधि लागू की जाती है। क्या कोई इस व्यवहार को समझा सकता है?क्लोजर
Test.java:
package example;
public abstract class Test {
public void callMethods(Object obj){
callMethods();
callMethods2();
}
public void callMethods() {
System.out.println("Default callMethods");
}
public void callMethods2() {
System.out.println("Default callMethods2");
}
}
run.clj:
(let [obj (proxy [example.Test] []
(callMethods
([] (println "Overridden callMethods"))
([obj] (proxy-super callMethods obj)))
(callMethods2
([] (println "Overridden callMethods2"))))]
(.callMethods obj)
(.callMethods obj :test))
आउटपुट:
Overridden callMethods
Default callMethods
Overridden callMethods2
अपेक्षित उत्पादन:
Overridden callMethods
Overridden callMethods
Overridden callMethods2