JShell जावा 9 संस्करण में पेश किया गया एक कमांड-लाइन इंटरैक्टिव टूल है जो प्रोग्रामर को main() विधि घोषित किए बिना सरल कथनों, अभिव्यक्तियों, चरों, विधियों, कक्षाओं, इंटरफेस आदि को निष्पादित करने की अनुमति देता है।
JShell में, कंपाइलर टाइपकास्टिंग मुद्दों के बारे में प्रोग्रामर को त्रुटियां फेंककर चेतावनी देता है। हालांकि, यदि प्रोग्रामर इससे अवगत है, तो स्पष्ट कास्टिंग की आवश्यकता होगी। यदि हमें छोटे डेटा मान को बड़े प्रकार में परिवर्तित करने की आवश्यकता है, तो निहित कास्टिंग की आवश्यकता होगी।
इंटीजर टाइपकास्टिंग के दो प्रकार हैं:
- लिटरल-टू-वेरिएबल असाइनमेंट: उदाहरण के लिए, short s1 = 123456, डेटा रेंज से बाहर है। यह कंपाइल-टाइम पर ज्ञात होता है, और कंपाइलर एक त्रुटि फ्लैग करता है।
- वेरिएबल-टू-वेरिएबल असाइनमेंट: उदाहरण के लिए, s1 = i1। उस चरण में int में संग्रहीत मान: 4567, जो short प्रकार की सीमा के भीतर है, और कंपाइलर कोई त्रुटि नहीं फेंकता। इसे स्पष्ट कास्टिंग s1 = (short) i1 के साथ पूर्व-खाली किया जा सकता है।
नीचे दिए गए कोड स्निपेट में, हम निहित और स्पष्ट दोनों प्रकार के रूपांतरण लागू कर सकते हैं।
C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> byte b = 128; | Error: | incompatible types: possible lossy conversion from int to byte | byte b = 128; | ^-^ jshell> short s = 123456; | Error: | incompatible types: possible lossy conversion from int to short | short s = 123456; | ^----^ jshell> short s1 = 3456 s1 ==> 3456 jshell> int i1 = 4567; i1 ==> 4567 jshell> s1 = i1; | Error: | incompatible types: possible lossy conversion from int to short | s1 = i1; | ^^ jshell> s1 = (short) i1; s1 ==> 4567 jshell> int num = s1; num ==> 4567