असल में तुम दोनों को नो-args निर्माता और मनुष्य और सेटर तरीके होना चाहिए। spec की धारा 2.1 में आवश्यकताओं को इंगित किया गया है।
कोई आर्ग निर्माता आवश्यकता मेरी कॉपी में पेज 17 पर पाया जाता है:
इकाई वर्ग को नो-आर्ग निर्माता होना आवश्यक है। इकाई वर्ग में अन्य रचनाकार भी हो सकते हैं। नो-एर्ग कन्स्ट्रक्टर सार्वजनिक होना चाहिए या संरक्षित होना चाहिए।
पृष्ठ 18 एक्सेसर तरीकों के लिए आवश्यकता है:
एक इकाई की लगातार राज्य उदाहरण चर, जो बीन्स गुण जावा के अनुरूप हो सकती द्वारा प्रतिनिधित्व किया है। एक उदाहरण चर सीधे इकाई उदाहरण अपने आप में इकाई के तरीकों के भीतर से केवल पहुँचा जा सकता है। उदाहरण चर संस्था की ग्राहकों द्वारा पहुँचा नहीं किया जाना चाहिए। संस्था की राज्य इकाई के केवल एक्सेसर विधियों (गेटर/सेटर विधि) या अन्य व्यापार के तरीकों के माध्यम से ग्राहकों को लिए उपलब्ध है। उदाहरण के लिए, संरक्षित चर निजी होने चाहिए, या पैकेज दृश्यता।
फ़ील्ड बनाम संपत्ति का उपयोग इंगित करता है कि जेपीए प्रदाता आपकी इकाई के साथ कैसे इंटरैक्ट करता है, न कि क्लाइंट एप्लिकेशन इसके साथ कैसे इंटरैक्ट करता है। ग्राहक हमेशा प्राप्त और सेट विधियों का उपयोग करना चाहिए।
कुछ जेपीए प्रदाताओं इन आवश्यकताओं में अधिक उदार होते हैं और आप एक विशिष्ट विक्रेता के साथ (जैसा कि ऊपर का सुझाव दिया) निर्माता निजी बनाने के लिए सक्षम हो सकता है। एप्लिकेशन पोर्टेबल नहीं हो सकता है, हालांकि यदि आप भविष्य में माइग्रेट करते हैं तो आप आश्चर्यचकित हो सकते हैं।
तो मैं पूरी तरह से तरीकों को छोड़ते हुए की सिफारिश नहीं होगा। समस्या को हल करने के लिए मैं सार्वजनिक नो-एर्ग सीटीओ को बहिष्कृत के रूप में चिह्नित करूंगा (जेवाडोक में कुछ जेपीए प्रदाता उपयोग के लिए केवल इसके बारे में बताएं)। सेट विधियों में वह तर्क हो सकता है जिसे आप अपने आविष्कारों को बनाए रखना चाहते हैं।
यह आदर्श नहीं है लेकिन इसे गलत सीटीआर को दुर्घटना से उपयोग करने से रोकना चाहिए (मुझे लगता है कि आपके पास एक सीटीओआर है जो इनवेरिएंट सेट करता है)।
इसे सार्वजनिक –