2009-02-23 10 views
8

मैं एक मौजूदा वर्ग पुस्तकालय के लिए कुछ सरल आवरण वर्गों बनाना चाहते हैं। वाक्य रचना को पढ़ने के लिए अच्छा और (कोड पूरा होने के माध्यम से) का अनुमान लगाना अच्छा बनाने के लिए मैं के तरीकों java.lang.Object निकालना चाहते हैं।मैं कोड पूरा होने से सभी java.lang.Object तरीकों को कैसे छिपा सकता हूं?

समस्या यह है कि जावा में सभी गैर-परमाणु बातें वस्तु से विरासत है और इस तरह इन तरीकों है। मैंने बिना सफलता के, enums और interfaces के माध्यम से रैपर वाक्यविन्यास बनाने की कोशिश की है; क्योंकि enums और इंटरफेस भी java.lang.Objects हैं।

java.lang.Object नौ तरीकों कि मैं अपने इंटरफेस के कोड पूरा होने में देखने के लिए नहीं करना चाहती है। यहाँ मैं क्या (लाल) और क्या मैं रखना चाहते हैं (हरा) निकालना चाहते है:

public interface IMySyntax{ 
    public IMySyntax myMethod1(); 
    public IMySyntax myMethod2(); 
} 

public class MyBuilder implements IMySyntax{ 
    public static IMySyntax build(){ return (IMySyntax) new MyBuilder() } 
    public IMySyntax myMethod1(){ /* do something */ return (IMySyntax) this } 
    public IMySyntax myMethod2(){ /* do something */ return (IMySyntax) this }  
} 
:

alt text http://ju.venile.de/upload/java-lang-object-methods.png

यहाँ अच्छा रैपर के आसपास वर्गों (बिल्डर पैटर्न) बनाने मौजूदा के लिए कुछ उदाहरण कोड है एक interf को बिल्डर के सभी this बयान कास्टिंग

MyBuilder.build() 
     .myMethod1() 
     .myMethod2(); 

:

नया आवरण कोड का उपयोग इस तरह दिखना चाहिए ऐस विधि दृश्यता को कम करेगा, उदा। अगर निर्माता एक इंटरफेस को और अधिक लागू करता है। दुर्भाग्यवश, सभी java.lang.Object विधियां रहेंगी।

तो इस विधि छुपा जावा में संभव हो गया था (शायद एनोटेशन का उपयोग कर?), मैं कि आईडीई नास्तिक (अच्छा कोड हर जगह पूरा होने) है एक अच्छा पुस्तकालय बना सकते हैं। यदि नहीं, तो शायद कम से कम ग्रहण आईडीई (शायद एक प्लगइन?) के लिए एक चाल है जो java.lang.Object विधि छिपाने के लिए प्रदान कर सकता है।

+1

गायब हो जाएगा मुझे लगता है कि आप एक विशेष आईडीई (ग्रहण की तरह) को यह दायरा सीमित कर सकते हैं। मुझे 99% यकीन है कि इंटेलिजे आईडीई बॉक्स के ठीक बाहर करता है (यानी यह सबसे प्रासंगिक तरीकों को पहले रखता है)। –

उत्तर

26

ग्रहण 3.4 के लिए कम से कम आप निम्न कर सकते हैं: -> जावा -> प्रकटन -

1) प्राथमिकताएं पर जाएं> प्रकार फिल्टर 2) पर क्लिक करें जोड़ें, और कोड में अब java.lang.Object

दर्ज सहायता, विधियों java.lang.Object से सीधे विरासत में मिला

+0

Thx! यदि कोई भी जावा आधारित उत्तर के साथ जल्द ही नहीं आता है, तो मैं इसे स्वीकार करूंगा। – Juve

+0

मैं इस दृष्टिकोण की सिफारिश करता हूं। आप ग्रहण को भी बता सकते हैं कि किस प्रकार के प्रस्तावों का उपयोग करना है। –

+0

समस्या यदि आपको उदाहरण के लिए स्ट्रिंग की आवश्यकता है, तो आप इसे पूरा होने से चूक जाते हैं। उन्हें मैच के लिए केवल यदि आप दो या अधिक चरित्र लिखा हो, या सूची के अंत डाल दिया और डिफ़ॉल्ट या ऐसा ही कुछ करके उन्हें बाहर ग्रे एक और अधिक परिष्कृत समाधान के लिए की जरूरत है। –

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

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