2011-02-22 16 views
22

मैं एक नया कोडबेस पर काम कर रहा हूं और सिस्टम को एक नए ढांचे में माइग्रेट कर रहा हूं।जावा में किसी पैकेज को बहिष्कृत करने का सबसे स्पष्ट तरीका क्या है?

ऐसे कई पैकेज हैं जिन्हें मैं बहिष्कृत करना चाहता हूं, बस अन्य डेवलपर्स को यह स्पष्ट करने के लिए कि इस पैकेज के अंदर सबकुछ अब नए विकास के लिए उपयोग नहीं किया जाना चाहिए।

यह इंगित करने का सबसे अच्छा तरीका क्या है कि एक संपूर्ण पैकेज को बहिष्कृत कर दिया गया है?

+0

नोटिस वहाँ पैकेज के अंदर सब कुछ पैकेज खुद का बहिष्कार कर बनाम का बहिष्कार कर के बीच एक अंतर है।पैकेज को अस्वीकार करना एक संकेत है कि वर्तमान में पैकेज के अंदर सबकुछ हटा दिया गया है ** और ** इस पैकेज में कुछ भी नहीं जोड़ा जाना चाहिए – beluchin

उत्तर

8

तुम खुद कहा: आप सब कुछ है कि अंदर एक पैकेज, नहीं पैकेज ही है का बहिष्कार करना चाहते। पैकेज नामस्थान के अलावा कुछ भी नहीं है और नामस्थान को बहिष्कृत करने का एक अलग अर्थ होगा - जैसे इस नामस्थान का अब का उपयोग न करें। की तरह उस नामस्थान पर कोई भी नया आइटम न जोड़ें।

आपके मामले में, मेरा सुझाव है कि आप प्रत्येक कक्षा के प्रत्येक सार्वजनिक विधि (और फ़ील्ड) को बहिष्कृत करें जिसका अब उपयोग नहीं किया जाना चाहिए। यह आधुनिक आईडीई में दिखाई देता है और डेवलपर्स को चेतावनी दी जाती है जब वे पुराने वर्गों और विधियों का उपयोग करना चाहते हैं। और आप अपने कोड को देख सकते हैं और उन वर्गों और विधियों की निर्भरताओं को खत्म करने के लिए कदम से कदम उठा सकते हैं।

+7

हम्म की चाल करेगा जो जोड़ने के लिए बहुत सी टिप्पणियां हैं। मैं उम्मीद कर रहा था कि आप इसे एक पैकेज स्तर पर एक बार ऐसा कर सकते थे और आईडीई उसी तरीके से कार्य करेगा जैसे कि आपने इसे हर विधि और क्षेत्र में किया था। –

+0

आप अपने पैकेज में केवल प्रत्येक कक्षा @Deprecated के रूप में चिह्नित कर सकते हैं। सभी विधियों और क्षेत्रों में एनोटेशन जोड़ने की आवश्यकता नहीं है। – dart

+0

मैंने मानक समाधान में अपना समाधान जोड़ा। – dart

2

आप Package annotation बना सकते हैं और @Deprecated के साथ किसी भी पैकेज का बहिष्कार :)

+0

यह काम नहीं करता है। मैं उम्मीद कर रहा था कि यह मेरे मामले में –

4

AspectJ का उपयोग करें। एक पहलू है कि एक संकलक चेतावनी जब पैकेज प्रयोग किया जाता है जारी करता है बनाएँ:

public aspect DeprecationAspect{ 

    declare warning : 
     call(* foo.bar..*(..)) : "Package foo.bar is deprecated"; 

} 

(आप आसानी से अगर आप ant या maven का उपयोग करने के लिए अपने निर्माण AspectJ जोड़ सकते हैं)

+0

@ जोचिम कई चीजें अधिक हैं: आईडीई, संस्करण नियंत्रण, निरंतर एकीकरण, सिस्टम बनाने आदि। और फिर भी: मैं उनके बिना विकसित नहीं होगा। AspectJ में यह विशिष्ट सुविधा है (कई अन्य लोगों के बीच) जिन्हें AspectJ के बिना आसानी से हासिल नहीं किया जा सकता है। इसका इस्तेमाल क्यों नहीं करें? यह निश्चित रूप से कोई नुकसान नहीं करता है, और यह नीतियों को लागू करने में मदद करता है। और उस व्यक्ति को जिसने इसे कम किया: क्यों? यह एक वैध सुझाव है। क्या आप मुझे _any_ अन्य तकनीक दिखा सकते हैं जो कोड की कुछ पंक्तियों में ऐसा ही कर सकता है? –

+0

@ सेन: मुझे लगता है कि जिस व्यक्ति ने सोचा था वह एक * बुरा * सुझाव था। –

+0

@ सॉफ्टवेयर बंदर: ठीक है यह स्पष्ट है। लेकिन मुझे दिलचस्पी होगी * क्यों * उन्हें लगता है कि यह एक मानक तकनीक का उपयोग करने का एक बुरा सुझाव है जो इस तरह के कार्यों के लिए बिल्कुल डिजाइन किया गया है। –

30

मैं इस हाल ही में करना था और इस्तेमाल किया पैकेज को बहिष्कृत करने के लिए package-info.java फ़ाइल।

http://www.intertech.com/Blog/whats-package-info-java-for/

केवल पैकेज घोषणा के साथ अपने पैकेज के लिए एक package-info.java फ़ाइल जोड़ें:

/** 
* @deprecated As of release 2.0, replaced by {@link com.acme.new.package} 
*/ 
@Deprecated 
package com.acme.old.package; 

ग्रहण, सभी स्थानों पर जहां उपयोगकर्ता इस पैकेज से एक वर्ग का आयात करता है एक प्रतिवाद चेतावनी के साथ रेखांकित किया जाएगा ।

+2

जावा 7 के रूप में, मेरा मानना ​​है कि यह सही जवाब है, क्योंकि अब पैकेज एनोटेशन के रूप में @ डेपरेटेड का उपयोग करना संभव है: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6492694 –

+0

I मान लीजिए 'javaDoc' में 'पैकेज-सूचना' स्तर में' बहिष्कृत 'संशोधक की अनुमति नहीं है। – Milli

+0

@ मिली जावा 7 में बग (फिक्स्ड) के बारे में पहली टिप्पणी देखें। – muymoo

2

जो लोग बाद में आया था के लिए ...
आईडिया के साथ मेरा समाधान "पथ में बदलें" खोजने के लिए

पाठ: (सार्वजनिक | संरक्षित) + (\ रों) (सार) (\ रों) (स्थिर) (\ रों) (अंतिम) (\ रों) * (वर्ग | इंटरफेस | enum | enum)
से बदले: @Deprecated \ n \ 7 \ $ 1 \ $ 3 \ $ 5 \ $ $ 9
विकल्प: (चुनें) रेगुलर एक्सप्रेशन
निर्देशिका: {dir चुनें}

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

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