इसके लिए एक संक्षिप्त शीर्षक बनाना मुश्किल है।कट ऑफ सुपरक्लास पर दो बार पॉइंटकट मारने से कैसे बचें, लेकिन व्युत्पन्न क्लास ओवरराइड करता है?
वैसे भी, कल्पना मैं एक माता पिता के वर्ग है:
public class Shape {
public Dimensions getDimensions() {
// Does some generic stuff.
}
}
मैं इसमें से एक व्युत्पन्न वर्ग कि getDimensions विधि ओवरराइड करता है:
public class Circle extends Shape {
public Dimensions getDimensions() {
// Does some stuff.
super.getDimensions();
}
}
जब मैं Shape.getDimensions
पर एक pointcut साथ एक पहलू बनाने , पॉइंटकट दो बार मारा जाता है जब Circle.getDimensions
कहा जाता है: एक बार Circle.getDimensions
के लिए, फिर एक बार जब यह super.getDimensions
पर कॉल करता है।
pointcut इस तरह दिखता है: @Pointcut("execution(* Shape.getDimensions(..))")
मैं घोषित प्रकार का नाम (JoinPoint.getSignature().getDeclaringType().getName()
का प्रयोग करके) की जाँच करने के सलाह के अंदर एक हैक जोड़ दिया है, लेकिन मैं इसे नहीं बल्कि सकल खोजने के लिए और यह एक हैक की तरह तरह का मानना है । मुझे लगता है कि ऐसा करने का एक बेहतर तरीका होना चाहिए।
क्या वहां है?
क्षमाकरण अगर प्रारूपण बहुत अच्छा नहीं है। पहली बार यहां एक प्रश्न पूछना (मैं आमतौर पर पहले से ही जवाब पा सकता हूं)।
वर्क्स खूबसूरती से है, धन्यवाद। मैं एनोटेशन शैली के लिए अधिक उपयोग किया जाता है, लेकिन कुंजी cflowbelow कॉल था। यह पता लगाने की कोशिश में कि क्या मैं इसे एक ही सलाह में समझ सकता हूं (इसे समझ नहीं पाया), मुझे यह सुंदर परिशिष्ट मिला: http://www.eclipse.org/aspectj/doc/next/progguide/ semantics-pointcuts.html – Depressio
तो मेरे उत्तर को स्वीकार करने और ऊपर उठाने के लिए अग्रिम धन्यवाद। ;-) कृपया कीजिए। – kriegaex
मुझे ऐसा करने के लिए स्पष्ट रूप से 15 अंक की आवश्यकता है। मेरे पास केवल 11 है। मेरा विश्वास करो, मैंने कोशिश की! :( – Depressio