2011-07-02 11 views
6

पर पहलू जोड़ने के तरीकों को जोड़ सकते हैं मैंने पहलू के कुछ लेख पढ़े हैं, मुझे पता है कि यह कक्षाओं को बढ़ा सकता है, जो आकर्षक है। मेरे पास एक बहुत ही बेवकूफ सवाल है कि मुझे एक स्पष्ट उत्तर नहीं मिल रहा है:java.lang.String

क्या jj.lang.String के तरीकों को जोड़ सकते हैं?

या इसी तरह का प्रश्न: यदि मुझे कुछ कक्षाओं के स्रोत नहीं मिल पा रहे हैं, तो क्या मैं उन्हें पहलू द्वारा बढ़ा सकता हूं?

उत्तर

6

नहीं, आप यह मेरे दोस्त नहीं कर सकते हैं।

मैं इस बारे में सोच रहा है आप के लिए Type not exposed to user

अधिक जानकारी के लिए क्या देख रहे कृपया The AspectJ Development Environment Guide #Special Cases

पर एक नज़र डालें यह कहते हैं

निम्नलिखित वर्गों LTW बुनियादी ढांचे के संपर्क में नहीं कर रहे हैं परवाह किए बिना aop.xml फ़ाइल (0)

  • सभी org.aspectj * वर्गों (और सबपैकेज) -। उन लोगों के रूप बुनियादी ढांचे में ही
  • सभी जावा द्वारा की जरूरत है * और javax * वर्गों (और सबपैकेज)
  • सभी sun.reflect * कक्षाएं -।।। के रूप में वे जेडीके विशिष्ट वर्ग होते हैं जब प्रतिबिंबित कॉल
+0

यह उत्तर केवल एलटीडब्ल्यू पर लागू होता है। – selig

4

मैं पहलू पर कोई विशेषज्ञ नहीं हूं, लेकिन मेरा मानना ​​है कि आप इन दोनों चीजों को कर सकते हैं।

कक्षा में विधियों को जोड़ने के लिए, या यहां तक ​​कि इसे एक नया इंटरफेस लागू करने और एक पहलू के माध्यम से कार्यान्वयन की आपूर्ति करने के लिए, मुझे लगता है कि आप inter-type declarations चाहते हैं।

AspectJ बाइट-कोड मैनिपुलेशन द्वारा अपना काम करता है, इसलिए आपको उन कक्षाओं के स्रोत तक पहुंच की आवश्यकता नहीं है, जिन्हें आप बदल रहे हैं।

8

मैं बस कुछ और ढूंढ रहा था और इस प्रश्न में ठोकर खा रहा था। मैं यह इंगित करना चाहता हूं कि Kowser का जवाब, भले ही इसे स्वीकार किया गया हो, कुछ हद तक गलत है। प्रश्न में एलटीडब्लू को कोई प्रतिबंध नहीं है, इसलिए सीटीडब्ल्यू अभी भी दौड़ में है। जेडीके/जेआरई कक्षा फाइलों को बुनाई करना संभव है और फिर बाद के चरणों में सलाह वर्गों को बूट क्लास पथ में प्रीपेड करना संभव है। मैंने इसे पहले किया है (यहां तक ​​कि वास्तव में क्या पूछा गया था, यानी स्ट्रिंग के भीतर एक नई विधि घोषित करना), और यह बिना किसी समस्या के काम करता है।

संबंधित मुद्दे