2014-10-06 6 views
13

किसी को भी एक बेहतर तरीका निम्नलिखित बयान लिखने के लिए पता है:किसी सरणी प्रकार से जुड़ी कक्षा कैसे प्राप्त करें?

example.mySpecialMethod(new MySpecialClass[0].getClass()) 

मैं सरणी प्रकार की जरूरत है, लेकिन अगर वहाँ एक बेहतर समाधान है मैं नहीं जानता। फिलहाल यह उदाहरण मेरे लिए काम करता है, लेकिन शायद new कीवर्ड के बिना ऐसा करने का कोई बेहतर तरीका जानता है।

+1

क्यों नहीं 'MySpecialClass.class'? यदि 'mySpecialMethod()' पैरामीटर के रूप में 'क्लास' लेता है, तो यह किसी सरणी को तुरंत चालू करने का कोई मतलब नहीं है। –

+0

विधि 'कक्षा <की अपेक्षा करता है? MySpecialClass []> c 'को param – user3280180

+0

के रूप में विस्तारित करता है, मैं देखता हूं, मेरा बुरा। –

उत्तर

17

new MySpecialClass[0] के वर्ग MySpecialClass[].class तो आप उपयोग कर सकते हैं:

example.mySpecialMethod(MySpecialClass[].class) 
+0

जिज्ञासा से बाहर, यदि आपका घटक प्रकार संकलन समय पर ज्ञात नहीं था तो सबसे अच्छा समाधान क्या होगा? मैं 'java.lang.reflect.Array.newInstance (घटक क्लास, 0) से बेहतर तरीके से नहीं सोच सकता .getClass() ' – biziclop

+0

@biziclop मेरा कोड मूल के बराबर है। लेकिन अगर आपको किसी ऑब्जेक्ट की वास्तविक श्रेणी की आवश्यकता है तो आपको उस ऑब्जेक्ट के संदर्भ की आवश्यकता है। – assylias

+0

मुझे पता है, यह सिर्फ एक पूर्ण तरफ के रूप में मेरे पास हुआ। किसी सरणी के क्लास ऑब्जेक्ट को देखते हुए, आप घटक वर्ग प्राप्त करने के लिए बस 'getComponentType()' को कॉल कर सकते हैं। लेकिन रिवर्स कहीं अधिक जटिल लगता है। – biziclop

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