2009-11-05 4 views
14

मेरे पास Class वैरिएबल है जो एक निश्चित प्रकार रखता है और मुझे एक वेरिएबल प्राप्त करने की आवश्यकता होती है जो संबंधित सरणी कक्षा रखती है। सबसे अच्छा मैं इसके साथ आ सकता हूं:जावा में किसी दिए गए वर्ग के लिए ऐरे क्लास कैसे प्राप्त करें?

Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass(); 

क्या नया उदाहरण बनाने के बिना ऐसा करने का कोई तरीका है?

उत्तर

11

आप एक उदाहरण बनाने के लिए नहीं करना चाहते हैं, तो आप सरणी का प्रामाणिक नाम मैन्युअल रूप से बना सकते हैं और नाम से वर्ग मिल सकता है:

// Replace `String` by your object type. 
Class stringArrayClass = Class.forName(
    "[L" + String.class.getCanonicalName() + ";" 
); 

लेकिन Jakob Jenkov argues in his blog कि अपने समाधान बेहतर से एक है, क्योंकि यह तारों के साथ झुकाव की जरूरत नहीं है।

Class stringArrayClass = Array.newInstance(String.class, 0).getClass(); 
+2

वह ऊपर के साथ शुरू होता है और मैं क्या है के साथ समाप्त होता है। तो मुझे लगता है कि 'नया प्रवेश' ऐसा करने का सबसे साफ तरीका है। –

+0

यह वास्तव में दोनों तरीकों से काम करता है, लेकिन आपने कहा कि आप एक नया उदाहरण नहीं बनाना चाहते हैं। –

+0

सच है। मैं वास्तव में एक क्लीनर समाधान की तलाश में था। ऐसा नहीं है कि मैं नया उदाहरण नहीं चाहता हूं लेकिन मेरे पास एक नहीं होगा :-) –

-1
Class stringArrayOfClass = String[].class; 
+0

मुझे पहले से ही प्रकार पता नहीं है; यह कक्षा चर में है। तो आपकी विधि काम नहीं करेगी। –

+2

इसे इंगित करने के लिए धन्यवाद –

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