आप कक्षा के सभी घोषित क्षेत्रों को प्राप्त करने के लिए Class#getDeclaredFields()
का उपयोग कर सकते हैं। मूल्य प्राप्त करने के लिए आप Field#get()
का उपयोग कर सकते हैं।
संक्षेप में:
Object someObject = getItSomehow();
for (Field field : someObject.getClass().getDeclaredFields()) {
field.setAccessible(true); // You might want to set modifier to public first.
Object value = field.get(someObject);
if (value != null) {
System.out.println(field.getName() + "=" + value);
}
}
प्रतिबिंब के बारे में अधिक जानने के लिए जाँच Sun tutorial on the subject।
जिसके अनुसार, खेतों करता है जरूरी नहीं कि सभी एक VO के गुणों का प्रतिनिधित्व करते हैं। आप get
या is
से शुरू होने वाली सार्वजनिक विधियों को निर्धारित करना चाहते हैं और फिर वास्तविक संपत्ति मानों को पकड़ने के लिए इसे आमंत्रित करें।
for (Method method : someObject.getClass().getDeclaredMethods()) {
if (Modifier.isPublic(method.getModifiers())
&& method.getParameterTypes().length == 0
&& method.getReturnType() != void.class
&& (method.getName().startsWith("get") || method.getName().startsWith("is"))
) {
Object value = method.invoke(someObject);
if (value != null) {
System.out.println(method.getName() + "=" + value);
}
}
}
बारी में कहा कि, आपकी वास्तविक समस्या को हल करने और अधिक सुरुचिपूर्ण तरीके हो सकते हैं। यदि आप कार्यात्मक आवश्यकता के बारे में कुछ और बताते हैं जिसके लिए आपको लगता है कि यह सही समाधान है, तो हम सही समाधान का सुझाव दे सकते हैं। मालिश, javabeans के लिए कई कई उपकरण उपलब्ध हैं।
क्या होगा यदि मैं करने के लिए है क्षेत्र के मूल्य को संशोधित करें i एन वस्तु? संशोधित करें जैसे gte वर्तमान मान कुछ निष्पादित करते हैं और फिर इसे ऑब्जेक्ट में वापस जोड़ते हैं? –