2009-11-08 27 views
18

सी # में आप इस तरह सेटअप गुण कर सकते हैं:क्या जावा में स्वचालित गुण हैं?

public int CustomerId {get;set;} 

कौन सा ग्राहक आईडी कहा जाता है एक स्वत: संपत्ति सेट है, लेकिन अगर वहाँ जावा में इसी तरह के कुछ भी था मैं सोच रहा था?

+0

जावा क्या मैं एक "निम्न स्तर के उच्च स्तर" भाषा के रूप में वर्णन है। यह एक उच्च स्तरीय भाषा है जिसमें इसमें स्मृति प्रबंधन है, वस्तु उन्मुख है, आदि। लेकिन यह इस स्तर में निम्न स्तर है कि लगभग कुछ भी "अतिरिक्त" संकलक द्वारा लागू नहीं किया जाता है। यहां तक ​​कि सबसे सरल पैटर्न, गुणों की तरह, प्रोग्रामर द्वारा मैन्युअल रूप से किया जाना है (मुझे यकीन है कि कहीं अपवाद है)। (शायद यह एक "शुद्ध" ओओपी भाषा है?) यह एक अच्छी बात है और एक बुरी चीज है। यह एक कारण है कि मैं जावा को पहली भाषा के रूप में सुझाता हूं, क्योंकि यह अत्यधिक जटिल होने के बिना ओओपी मूल बातें सिखाएगा। –

उत्तर

26

नहीं है, जावा पल में समान नहीं है। बिल्ली, जावा में गुण अधिकतर कंपाइलर द्वारा वास्तविक रूप से समझने के बजाय, सी # में होने के बजाय प्राप्त/सेट विधियों के सम्मेलन होते हैं। उपकरण और पुस्तकालय प्राप्त/सेट पैटर्न को पहचानते हैं, लेकिन भाषा उनके बारे में नहीं जानती है। (यह संभव है कि जावा के भविष्य के संस्करण में, अधिक "औपचारिक" समर्थन होगा।)

कुछ जावा जैसी भाषाओं जैसे Groovy में स्वचालित संपत्ति उत्पादन है, हालांकि।

+0

सी # एक "जावा-लाइक" भाषा है –

+9

@ टॉम: हाँ, कुछ मायनों में। मुझे यकीन नहीं है कि यह प्रासंगिक है हालांकि ... यह निश्चित रूप से अमान्य नहीं है जो मैंने लिखा था। –

+0

@ जोनस्केट: क्या आप "वास्तव में समझने" से क्या मतलब समझ सकते हैं? मैंने सोचा कि सी # सामान एक ही तरह की चीज के लिए सिंटैक्टिक चीनी थी, अर्थात् एक फ़ील्ड पढ़ने/लिखने के लिए कुछ कार्यों के साथ? – Carlos

12

नहीं, जावा में ऐसी बात नहीं है।

ग्रहण में, हालांकि, आप स्वचालित रूप से स्रोत के साथ क्षेत्रों के लिए गेटर/सेटर तरीकों को लागू कर सकते> जनरेट getters/setters।

6
जावा भाषा अपने आप में नहीं

एनोटेशन का उपयोग कर सकते हैं। हालांकि, कम से कम एक पुस्तकालय है जो इसे प्रदान करता है। देखें: http://projectlombok.org/ (या अधिक विशिष्ट: http://projectlombok.org/features/GetterSetter.html)

+0

में बदल गया अच्छा लगता है। कुछ अन्य टिप्पणियां हैं (.NET devs के लिए विशेषताएँ) जैसे कि '@ क्लीनअप' @ toString' 'NonNull' ... –

1
  • JavaFX गुण भी ब्याज की हो सकती है:

http://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm

IntegerProperty num = new SimpleIntegerProperty(666); 
    System.out.println(num.getValue()); 
  • भी कैसे से बचने के लिए यह संबंधित सवाल को देखने के प्राप्त/सेट बॉयलर प्लेट कोड:

"Special attributes/properties" instead of getter/setter in Java to avoid boiler plate code

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