2011-09-19 14 views
5

संभव डुप्लिकेट:
How to loop over a Class attributes in Java?दोहराएं जावा में जिम्मेदार बताते हैं

class Foo{ 
    int id; 
    String name; 
    int bar; 
    int bar2; 

    //.. 
} 

Foo foo = new Foo(); 

वहाँ पर इस वस्तु जावा में जिम्मेदार बताते हैं पुनरावृति के लिए एक रास्ता है? मैं एक INSERT क्वेरी बनाना चाहता हूं और मुझे स्ट्रिंग्स में सभी int विशेषताओं को परिवर्तित करना होगा। विभिन्न प्रकार के अधिक गुण होने पर यह थोड़ा समस्याग्रस्त है।

धन्यवाद!

+0

यह प्रश्न डुप्लीकेट नहीं किया गया है, एक बात क्लास विशेषताओं पर लूप करना है और अन्य बात ओब्जेक्ट विशेषताओं पर लूप करना है। –

उत्तर

0

आप ऐसा करने के लिए जावा प्रतिबिंब का उपयोग कर सकते हैं।

3

मुझे लगता है कि this पिछला SO पोस्ट आपको जो भी चाहिए उसे करने में आपकी सहायता कर सकता है।

0

आप या Foo.class वस्तु पर getDeclaredFields बुला() विधि (foo.getClass() द्वारा फू वर्ग के सभी क्षेत्रों प्राप्त कर सकते हैं। GetDeclaredFields() यदि आप हाथ में वर्ग उदाहरण है ।

getDeclaredFields() फील्ड वस्तु (java.lang.reflect पैकेज में घोषित) की एक सरणी देता है।

ऐसा लगता है कि आप डेटाबेस में वस्तु के साथ काम करना चाहते हैं, तो यह एक लेने के लिए अच्छा हो सकता है INSERT कथन मैन्युअल रूप से उत्पन्न करने के बजाय जावा पर्सिस्टेंस एपीआई देखें क्योंकि यह आपको बहुत अधिक प्रदान करेगा और SQL पर मैन्युअल रूप से काम नहीं करेगा।

3

गुणों का आदेश प्रासंगिक उपयोग Apache Commons BeanUtils नहीं है, तो:

Foo foo = new Foo(); 
Map<String, Object> fields = (Map<String, Object>) BeanUtils.describe(foo); 

ध्यान दें कि BeanUtils जेनरिक का उपयोग नहीं करता है, इसलिए डाली।

अतिरिक्त नोट: इस ऑब्जेक्ट का उपयोग करने के लिए आपके ऑब्जेक्ट्स को जावाबीन विनिर्देश का पालन करना होगा।

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