पर जाना जाने वाला आदिम उदाहरण बनाना (बॉक्सिंग) आदिम उदाहरण मुझे एक विधि की आवश्यकता है जो आपूर्ति किए गए वर्ग प्रकार का उदाहरण देता है। आइए मान लें कि आपूर्ति किए गए प्रकार इस तरह सीमित हैं कि उनमें से एक "खाली" उदाहरण बनाया जा सकता है। उदाहरण के लिए, String.class
की आपूर्ति एक खाली स्ट्रिंग वापस कर देगी, Integer.class
की आपूर्ति एक इंटीजर लौटाएगी जिसका प्रारंभिक मान शून्य है, और इसी तरह। लेकिन मैं फ्लाई पर आदिम प्रकार (बॉक्सिंग) कैसे बना सकता हूं? इस कदर?क्लास को
public Object newInstance(Class<?> type) {
if (!type.isPrimitive()) {
return type.newInstance(); // plus appropriate exception handling
} else {
// Now what?
if (type.equals(Integer.class) || type.equals(int.class)) {
return new Integer(0);
}
if (type.equals(Long.class) // etc....
}
}
क्या सभी संभावित आदिम प्रकारों के माध्यम से पुनरावृत्ति करने का एकमात्र समाधान है, या क्या एक और अधिक सरल समाधान है? ध्यान दें कि दोनों
int.class.newInstance()
और
Integer.class.newInstance()
फेंक एक InstantiationException
(क्योंकि वे nullary कंस्ट्रक्टर्स नहीं है)।
@ जुनास: अब एक और देखो :) –
धन्यवाद! यह काम कर सकता है :) –
मुझे लगता है कि मैं एक के लिए जाना होगा? श्रृंखला। 'टाइप == long.class? (लांग) 0 एल: ', आदि –