मैं प्रतिबिंब का उपयोग कर रहा इस जैसे एक उदाहरण क्षेत्र को पुनः प्राप्त करने के पुरातन की एक सरणी पुनः प्राप्त करने के प्रतिबिंब का उपयोग करना:एक अज्ञात प्रकार
private int[] numbers = ....
क्षेत्र वस्तु के साथ
, मैं देख सकते हैं कि क्षेत्र एक सरणी शामिल और यदि ऐसा होता है, तो मैं सरणी में स्याही पर लूप करना चाहता हूं।
field.setAccessible(true);
Object value = field.get(foo);
ऊपर मूल्य चर ints की मेरी सरणी में शामिल होंगे: तो अगर उद्देश्य यह है कि इसके बाद के संस्करण फ़ील्ड में "foo" कहा जाता है, तो मैं कुछ इस तरह होगा। मैं उस ऑब्जेक्ट को नियमित सरणी की तरह कैसे मानूं और इसके मूल्यों पर पुन: प्रयास करूं?
संपादित करें: क्षमा करें, मुझे उपरोक्त मेरी कहानी के लिए एक महत्वपूर्ण बिंदु याद आया। मैं ऊपर एक सामान्य तरीके से कर रहा हूं इसलिए मुझे नहीं पता कि सरणी में कौन सा आदिम है। यह एक int [] या लंबा [] आदि हो सकता है तो int [] को कास्टिंग लंबे समय तक [] मामले में काम नहीं करेगा। उफ़!
मैं देख सकता हूं कि प्राप्त विधि किसी निश्चित अनुक्रमणिका पर मान पुनर्प्राप्त करेगी, हालांकि, आप सरणी की लंबाई कैसे प्राप्त करते हैं? – digiarnie
@ डिजीइर्नी, विधि अन्य गेटर्स के बीच जावाडोक में थोड़ी सी छिपी हुई है, यह 'ऐरे .getLength (ऑब्जेक्ट सरणी) ':) –
हाँ है जो वही है जो मैं चाहता था और हाँ आप सही हैं, यह उन सभी के बीच छिपा हुआ था अन्य गेटर्स और मैं बस इसे याद किया! धन्यवाद! – digiarnie