उदा।जावा में मेटा फ़ील्ड या विधियों को संदर्भित करना क्यों संभव नहीं है?
class Foo {
Integer bar;
}
साथ मुझे आश्चर्य है कि क्यों वहाँ एक भाषा सुविधा है कि मेरे पास
Foo.class.bar //yes, xxx.class returns something of java.lang.Class<T>
मेटा क्षेत्र पट्टी का उल्लेख करने के लिए सक्षम बनाता है ऐसा नहीं है?
मैं प्रो जेपीए 2 पुस्तक पढ़ रहा हूं और ऐसा लगता है कि कैनोलिक मेटामोडेल पीढ़ी आवश्यक है, क्योंकि जावा में यह संभव नहीं है।
नोट, यह सैद्धांतिक प्रश्न जिज्ञासा से बाहर है, जहां मैं कुछ अंतर्दृष्टि प्राप्त करना चाहता हूं, यह सुविधा क्यों लागू नहीं की गई थी।
--- अपडेट ---
मेरे सवाल में थोड़ा और अधिक विस्तार से बता दें इकाई ग्राफ़ एपीआई द्वारा जेपीए में विशेषताएं जोड़ना के उदाहरण पर विचार:
EntityGraph<Foo> g = myEntityManager.createEntityGraph(Foo.class)
g.addAttributeNodes("bar")
कोई औपचारिक है स्ट्रिंग "बार" और फू की विशेषता bar
के बीच लिंक (कंपाइलर/आईडीई के लिए)।
आप 'फील्ड फ़ील्ड = Foo.classgetDeclaredField ("बार") का उपयोग कर सकते हैं; ' –
मुझे पता है, लेकिन फिर मैं एक स्ट्रिंग अक्षर का उपयोग करता हूं, जो कि प्रकार नहीं है और न ही सुरक्षित –
जावा 8 के बाद, एक विधि प्रतिनिधित्व मौजूद है : 'System.out :: println' हालांकि इसमें' फ़ील्ड' जैसी कोई प्रतिबिंब क्षमता नहीं है। –