java - Catching ArrayStoreException at Compile-time -


जावा के ArrayList # toArray विधि के निम्नलिखित परीक्षण पर विचार करें। ध्यान दें कि मैं यह सहायक से कोड उधार

  सार्वजनिक वर्ग GenericTest {public static void (String [] args) {ArrayList। & Lt; पूर्णांक & gt; Foo = नया अर्रेलिस्ट & lt; पूर्णांक & gt; (); foo.add (1); foo.add (2); foo.add (3); foo.add (4); foo.add (5); पूर्णांक [] बार = foo.toArray (नया पूर्णांक [10]); System.out.println ("bar.length:" + bar.length); (पूर्णांक बी: बार) {System.out.println (b); } स्ट्रिंग [] baz = foo.toArray (नया स्ट्रिंग [10]); // अर्रेस्टोर एक्सपेशेशन सिस्टम.आउट.प्रिंटएलएन ("baz.length:" + baz.length); }}  

लेकिन, ध्यान दें कि वहाँ हो जाएगा एक ArrayStoreException जब एक डाल करने की कोशिश कर पूर्णांक एक में String []

आउटपुट:

  $ & gt; javac GenericTest.java & amp; amp; जावा-सीपी GenericTest bar.length: 10 1 2 3 4 5 अशक्त अशक्त अशक्त अशक्त सूत्र में अशक्त अपवाद "मुख्य" java.util.ArrayList.toArray पर java.lang.System.arraycopy (मूल निवासी विधि) पर java.lang.ArrayStoreException (अज्ञात स्रोत ) GenericTest.main (GenericTest.java:16)  

इस त्रुटि संकलन समय पर जावा जेनरिक के माध्यम से रोका जा सकता है?

ArrayStoreException मौजूद है इसलिए हुआ क्योंकि उस जावा के प्रकार प्रणाली इस स्थिति को ठीक से नहीं संभाल कर सकते हैं (iirc, समय जेनेरिक्स साथ आया था, यह पुनः स्थापित करने के लिए बहुत देर हो चुकी थी संग्रह संरचना के रूप में एक ही तरीके से arrays)।

इसलिए आप सामान्य रूप से इस समस्या को संकलन समय पर नहीं रोक सकते।

आप निश्चित रूप से आंतरिक एपीआई बना सकते हैं, आपरेशन रैप करने के लिए, गलती से गलत प्रकार हो रही है की संभावना को कम करने के लिए कर सकते हैं

यह भी देखें:।


Comments