मैं एक मौजूदा वर्ग पुस्तकालय के लिए कुछ सरल आवरण वर्गों बनाना चाहते हैं। वाक्य रचना को पढ़ने के लिए अच्छा और (कोड पूरा होने के माध्यम से) का अनुमान लगाना अच्छा बनाने के लिए मैं के तरीकों 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 विधि छिपाने के लिए प्रदान कर सकता है।
गायब हो जाएगा मुझे लगता है कि आप एक विशेष आईडीई (ग्रहण की तरह) को यह दायरा सीमित कर सकते हैं। मुझे 99% यकीन है कि इंटेलिजे आईडीई बॉक्स के ठीक बाहर करता है (यानी यह सबसे प्रासंगिक तरीकों को पहले रखता है)। –