परिदृश्य 1: साधारण मामला
यदि यह गारंटी दी जाती है कि आपकी वस्तु एक है Integer
, तो यह सरल तरीका है:
int x = (Integer)yourObject;
परिदृश्य 2: कोई संख्यात्मक वस्तु
जावा Integer
में Long
, BigInteger
आदि सभी Number
इंटरफ़ेस को लागू करते हैं जिसमें एक विधि का नाम है intValue
। संख्यात्मक पहलू के साथ किसी अन्य कस्टम प्रकार को भी लागू करना चाहिए Number
(उदाहरण के लिए:) Age implements Number
। तो तुम कर सकते हो:
int x = ((Number)yourObject).intValue();
परिदृश्य 3: पार्स संख्यात्मक पाठ
जब आप कमांड लाइन (या पाठ क्षेत्र आदि) से उपयोगकर्ता इनपुट स्वीकार करते हैं तो आप इसे एक के रूप में प्राप्त करते हैं String
। इस मामले में आप उपयोग कर सकते हैं Integer.parseInt(String string)
:
String input = someBuffer.readLine();
int x = Integer.parseInt(input);
यदि आपको इनपुट मिलता है Object
, तो आप इसका उपयोग कर सकते हैं (String)input
, या, यदि इसका कोई अन्य पाठ प्रकार हो सकता है input.toString()
:
int x = Integer.parseInt(input.toString());
दृश्य 4: पहचान हैश
जावा में कोई संकेत नहीं हैं। हालाँकि Object
इसके लिए एक पॉइंटर जैसा डिफ़ॉल्ट कार्यान्वयन है hashCode()
, जो सीधे उपलब्ध है System.identityHashCode(Object o)
। तो तुम कर सकते हो:
int x = System.identityHashCode(yourObject);
ध्यान दें कि यह है नहीं एक वास्तविक सूचक मूल्य। जेवीएम द्वारा वस्तुओं के मेमोरी एड्रेस को बदला जा सकता है जबकि उनकी पहचान हैश रख रही है। इसके अलावा, दो जीवित वस्तुओं की पहचान समान हैश हो सकती है।
आप भी उपयोग कर सकते हैं object.hashCode()
, लेकिन यह विशिष्ट प्रकार का हो सकता है।
परिदृश्य 5: अद्वितीय सूचकांक
ऐसे ही मामलों में आपको प्रत्येक ऑब्जेक्ट के लिए एक अद्वितीय सूचकांक की आवश्यकता होती है, जैसे डेटाबेस तालिका में (और पहचान हैश के विपरीत) जो किसी तालिका में (पहचान के विपरीत नहीं है) स्वतः बढ़े हुए आईडी मान। इसके लिए एक सरल नमूना कार्यान्वयन:
class ObjectIndexer {
private int index = 0;
private Map<Object, Integer> map = new WeakHashMap<>();
public int indexFor(Object object) {
if (map.containsKey(object)) {
return map.get(object);
} else {
index++;
map.put(object, index);
return index;
}
}
}
उपयोग:
ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject); // 1
int y = indexer.indexFor(new Object()); // 2
int z = indexer.indexFor(yourObject); // 1
परिदृश्य 6: एनम सदस्य
जावा एनम में सदस्य पूर्णांक नहीं हैं, लेकिन पूर्ण विशेषताओं (उदाहरण के लिए C / C ++ के विपरीत) हैं। संभवतः एक एनम ऑब्जेक्ट को कभी भी कन्वर्ट करने की आवश्यकता नहीं है int
, हालांकि जावा स्वचालित रूप से प्रत्येक एनुम सदस्य को एक इंडेक्स नंबर जोड़ता है। इस सूचकांक के माध्यम से पहुँचा जा सकता है Enum.ordinal()
, उदाहरण के लिए:
enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1
Object
कोई नहीं हैInteger
, तो मुझे यकीन नहीं है कि आपके कलाकारों से आपकी क्या अपेक्षा है।