Wrapper Class in Java: हमने पहले भी कहा है कि जावा एक Pure Object Oriented Programming Language है। यानी इसमें Primary Data Types को भी Objects की तरह Represent करके विभिन्न प्रकार के काम करने होते हैं। हालांकि हम Primary Data Type के Variables भी Create कर सकते हैं, लेकिन इन्हें विभिन्न प्रकार की Built–In Classes के साथ Use करने के लिए हमें इन्हें Class Type में Convert करना पडता है।
Conversion के बाद ये Class को Represent करते हैं, लेकिन इनके मान में कोई परिवर्तन नहीं आता है बल्कि इनको Basic Data Type से Class Type में Convert कर लिया जाता है, ताकि विभिन्न प्रकार की Built–In Classes इन्हें आसानी से उपयोग में ले सकें और हम इन पर विभिन्न प्रकार की उन Calculations को Perform कर सकें, जो केवल Class के Objects के साथ ही Perform की जा सकती हैं।
सारांश में हम तो ये कह सकते हैं कि विभिन्न प्रकार के Basic Data Types को उनकी सम्बंधित Wrapper Class द्वारा Object में Convert किया जाता है। ताकि हम Basic Data Types के मानों को भी उनकी Class के Objects के रूप में उपयोग में ले सकें।
विभिन्न प्रकार के Basic Data Types के मानों को Object में Convert करने के लिए Number नाम की एक Class java.lang नाम के Package में उपलब्ध है। ये एक Abstract Class है यानी हम इस Class का कोई भी Object Create नहीं कर सकते हैं, बल्कि इसकी Derived या Subclasses के Objects Create करते हैं।
इस Class से Derive की गई कुल 6 Classes Byte, Short, Integer, Float, Long, Double हैं, जो क्रमश: byte, short, int, float, long, double Basic Data Types को Represent करती हैं। इसे हम निम्नानुसार एक सारणी के रूप में Represent कर सकते हैं:
Wrapper Class for Converting Simple Types | |
Simple Data Type | Corresponding Wrapper Class |
Boolean | Boolean |
Char | Character |
Double | Double |
Float | Float |
Int | Integer |
Long | Long |
जावा की इन Wrapper Classes में विभिन्न प्रकार के Basic Data Type व Objects को Handle करने के लिए कई Unique Methods को Define किया गया है। इनमें से कुछ जरूरी व ज्यादा उपयोग में आने वाले Methods व उन्हें उपयोग में लेने का Description आगे बताया जा रहा है।
किसी Basic Data type के Variable या Constant को यदि सम्बंधित Wrapper Class के Object में Convert करना हो, तब हमें उन सम्बंधित Wrapper Classes के Constructors को Use करना होता है। ये काम हम निम्नानुसार Code Statement द्वारा कर सकते हैं:
A. Converting Primary Numbers to Object Numbers Using Constructor Methods | |
Constructor Calling | Performed Conversion Action |
Integer IntVal = new Integer( i ); | Conversion from int Data Type to Integer Object |
Float FloatVal = new Float( f ); | Conversion from float Data Type to Float Object |
Double DoubleVal = new Double( d ); | Conversion from double Data Type to Double Object |
Long LongVal = new Long( l ); | Conversion from long Data Type to Long Object |
इस Table में i, f, d व l क्रमश: int, float, double व long प्रकार के Basic Data Type के Variables हैं, जिन्हें उनके Corresponding Class के Object में Convert किया जा रहा है।
एक बार किसी Basic Data Type के मान को सम्बंधित Object में Convert करने के लिए विभिन्न प्रकार के Operations Perform करने के बाद यदि हमें उस Object को फिर से सम्बंधित Basic Data Type में Convert करना हो, तो हमें Wrapper Classes के निम्न typeValue() Methods को Call करना होता है, जहां type उस Type को Represent करता है, जिस Basic Data Type में Object के मान को Convert करना है।
B. Converting Object Numbers to Basic Numbers Using typeValue() Methods | |
Method Calling | Performed Conversion Action |
int i = IntObj.intValue(); | Conversion from Integer Object to int Data Type |
float f = FloatObj.floatValue(); | Conversion from Float Object to float Data Type |
double d = DoubleObj.doubleValue(); | Conversion from Double Object to double Data Type |
long l = LongObj.longValue(); | Conversion from Long Object to long Data Type |
कई बार ऐसी जरूरत होती है कि हमारे पास Primary Data Type के Numerical मान होते हैं, लेकिन उन्हें एक String की तरह Use करना होता है। किसी Numerical मान को String की तरह Use करने के लिए हमें उस Numerical मान को पहले String प्रकार के Representation में Convert करना होता है। किसी Basic Data Type के मान को String Representation के रूप में Convert करने के लिए हमें Wrapper Class के निम्न Methods को Use करना होता है:
C. Converting Basic Numbers to Strings Using String() Methods | |
Method Calling | Performed Conversion Action |
str = Integer.toString( i ); | Conversion from int Data Type to String Object |
str = Float.toString( f ); | Conversion from float Data Type to String Object |
str = Double.toString( d ); | Conversion from double Data Type to String Object |
str = Long.toString( l ); | Conversion from long Data Type to String Object |
इसी प्रकार से कई बार हमें ऐसी जरूरत होती है कि हमें किसी मान को दूसरे मान से Calculate करके नया मान Generate करना होता है, लेकिन हमारे पास जो Numerical मान होता है, वह String Format में होता है, जिस पर किसी भी प्रकार के Numerical Operation को Directly Perform नहीं किया जा सकता है।
इस स्थिति में पहले हमें मान के String Representation को Wrapper Class Object Representation में Convert करना होता है और उसके बाद उस Object Representation को Basic Data Type में Convert करके मान के साथ Calculation Perform करना होता है। String Representation को Wrapper Object में Convert करने के लिए हमें निम्न सारणी के अनुसार काम करना होता है।
D. Converting String to Numerical Objects Using Static Method ValueOf() | |
Method Calling | Performed Conversion Action |
DoubleObj = Double.valueOf( str ); | Conversion from String Object to double Data Type |
FloatObj = Float.valueOf( str ); | Conversion from String Object to float Data Type |
IntObj = Integer.valueOf( str ); | Conversion from String Object to int Data Type |
LongObj = Long.valueOf( str ); | Conversion from String Object to long Data Type |
किसी String Representation को Numerical Object में Convert करने के बाद उस Numerical Representation को फिर से Basic Data Type में Convert किया जा सकता है।
Numerical Strings मानों को Parsing Methods का प्रयोग करके Directly Primary या Basic Data Type के मानों में Convert किया जा सकता है। Parsing Methods केवल दो ही हैं, जो कि किसी Integer या Long प्रकार के String Representation को Directly Integer या Long प्रकार के Basic Data Type का मान Return कर देता है।
E. Converting Numerical Strings to Primary Numbers Using Parsing Method | |
Method Calling | Performed Conversion Action |
int i = Integer.parseInt( str ); | Conversion from String Object to int Data Type |
long i = Long.parseLong( str ); | Conversion from String Object to float Data Type |
यदि parseInt() व parseLong() Methods में Pass किए जाने वाले str String Object में Integer मान के अलावा कोई मान हो, तो ये Methods एक NumberFormatException Throw करते हैं। इसलिए इन्हें try Block में Use करना चाहि, और इस Exception को Handle करने के लिए एक catch Block भी लिखना चाहिए, अन्यथा str में Integer के अलावा कोई दूसरा मान होने पर Program Crash या Terminate हो जाता है। (Wrapper Class in Java)
// File Name: AdditionApplet.java import java.awt.*; import java.applet.*; public class AdditionApplet extends Applet { TextField textField1; TextField textField2; public void init() { textField1 = new TextField(5); textField2 = new TextField(5); add(textField1); add(textField2); textField1.setText("0"); textField2.setText("0"); } public void paint(Graphics g) { int value1 = 0, value2 = 0, sum = 0; String s ; g.drawString("Type a number in each box.", 10, 20); try { s = textField1.getText(); value1 = Integer.parseInt(s); s = textField2.getText(); value2 = Integer.parseInt(s); } catch(Exception excp) { g.drawString("Enter a Valid Number", 300, 20); } sum = value1 + value2; s = String.valueOf(sum); g.drawString("The sum of the values is:", 10, 40); g.drawString(s, 160, 40); } public boolean action(Event event, Object arg) { repaint(); return true; } }
Description:
इस Applet Program में सबसे पहले हमने Applet Window में दो TextField Objects textField1 व textField2 Create किए हैं। फिर Applet के init() Method में इन दोनों Text Boxes को Applet Window में add Method द्वारा Add किया है और उनमें Default मान 0 Display किया है, ताकि Applet Window पर Text Boxes Empty दिखाई ना दें।
फिर paint() Method में Graphics Class का एक Object g Create किया है, ताकि Applet पर विभिन्न प्रकार के Text Messages को Display किया जा सके। paint() Method में तीन Integer प्रकार के Basic Data Type के Variables Create किए हैं। value1 नाम के Variable में पहले Text Box का मान Store किया जाता है। value2 नाम के Variable में दूसरे Text Box का मान Store किया जाता है और sum नाम के Variable में इन दोनों मानों के योग को Store किया जाता है।
जावा में हम जब भी कोई Basic Data Type का Variable Create करते हैं, हमें उन Variables को Initialize करना जरूरी होता है। यदि हम ऐसा नहीं करते हैं, तो जावा का Compiler Error Generate करता है और Program को Compile नहीं होने देता है। इसीलिए value1, value2 व sum नाम के तीनों Integer Variables को मान 0 Initialize किया गया है।
चूंकि Text Box में User जो भी मान Input करता है, वह मान String Format में होता है और हमें इस String प्रकार के मान को दूसरे Text Box में दिए गए String प्रकार के मान से जोडना है, इसलिए सबसे पहले हमें इन String प्रकार के मानों को Integer प्रकार के मानों में Convert करना जरूरी होता है, ताकि उन पर Arithmetical Operations को Perform किया जा सके।
इस काम को पूरा करने के लिए हमने String Class का एक Object s Create किया है, ताकि Text Boxes से Return होने वाले String Format के मान को Integer Format में Convert करके value1 व value2 नाम के Variables में Store किया जा सके।
User दोनों Text Boxes में मानों को Fill करे] इसके लिए Applet Window पर एक Message “Type a number in each box.” को Location Number (10, 20) पर Display किया गया है। इसके बाद User जो भी मान Applet पर दिखाई देने वाले दोनों Text Boxes में Fill करता है, उन मानों को प्राप्त करने के Statement को try {} Block में लिखा गया है।
ताकि यदि User इन Text Boxes में Integer के अलावा कुछ भी Fill करता है, तो Throw होने वाले Exception को इसके नीचे दिए गए catch() Exception Block में Catch करके Exception को Process किया जा सके, ताकि Program Crash ना हो।
User ने पहले Text Box में जो भी मान Input किया होता है, वह मान s नाम के String प्रकार के Object में Store हो जाता है। फिर इस मान को Integer Wrapper Class के parseInt() Method में Pass करके Basic Integer Data Type के मान में Convert कर लिया जाता है और उस Integer प्रकार के Basic Data Type में Converted मान को value1 नाम के Basic Integer Data Type के Variable में Store कर लिया जाता है। इसी तरह से दूसरे Text Box वाले मान को भी value2 नाम के Basic Integer Data Type के मान में Convert करके Store कर लिया जाता है।
Text Box में Fill किए गए मान को Integer प्रकार के मान में Convert करने के लिए लिखे जाने वाले Codes को हमने try{} Block में इसलिए लिखा है, क्योंकि User Text Boxes में जो कुछ भी Enter करता है, वह s नाम के String प्रकार के Object में Store होता है। फिर जब इस String प्रकार के Object s में Stored मान को parseInt() Method द्वारा Integer प्रकार के मान में Convert किया जाता है, तब यदि s में पूर्णांक संख्याओं यानी Integers के अलावा कुछ भी होता है, तो ये Method एक Exception Throw करता है।
यदि इस Exception को Handle ना किया जाए, तो Program Crash हो सकता है। इसलिए इस Exception को Handle करने के लिए try {} Block के Just बाद में catch() Block Define किया गया है। इस catch Block में एक Message Display करने के लिए Statement लिखा गया है। जो उसी स्थिति में Execute होता है, जब try Block में कोई Error या Exception Generate होता है।
जैसे ही User Text Boxes में Integer के अलावा कुछ भी Fill करके Enter Key Press करता है, एक action Event Generate होता है और repaint() Method paint() Method को Call कर लेता है। paint() Method में ही try…catch Block को Define किया गया है।
इसलिए यदि User ने Text Boxes में सही मान यानी Integer Input किया है, तब तो Applet पर दोनों Text Boxes के मानों का योग दिखाई देता है, और यदि User ने किसी भी Text Box में Integer के अलावा कुछ भी Input करके Enter Key को Press किया है, तो एक Exception के कारण Applet Window पर एक Error Message “Enter a Valid Integer Number” दिखाई देने लगता है। इन दोनों ही स्थितियों के Applet को चि= में दर्शाया गया है।
जब User सही मान Input करता है, तब दोनों Text Boxes के मान value1 व value2 नाम के Variables में Basic Integer Data Type के रूप में Store हो जाते हैं। इन मानों को जोड कर इनके योग को sum नाम के Variable में Store कर लिया जाता है।
चूंकि अब हमें sum में Stored दोनों Text Boxes के मानों के योग को Applet पर Display करना है, लेकिन sum एक Integer प्रकार का Variable है, जिसके मान को Directly drawString() Method द्वारा Display नहीं करवाया जा सकता है। यानी हम निम्नानुसार Statement द्वारा sum को Applet पर Draw नहीं कर सकते हैं:
g.drawString(“The sum of the values is:”, 10, 40);
g.drawString(sum, 160, 40);
हम ऐसा इसलिए नहीं कर सकते हैं, क्योंकि drawString() Method केवल Strings को ही Applet पर Draw कर सकता है। इसलिए sum में स्थित Basic Integer Data Type के मान को पहले String प्रकार के Object में Convert करना जरूरी है। इस Conversion को Perform करने के लिए हमने निम्नानुसार Statement को Use किया है:
sum = value1 + value2;
s = String.valueOf(sum);
इस Statement द्वारा हमने Basic Integer Data Type के sum में Stored मान को String प्रकार के मान में Convert करके s नाम के String प्रकार के Variable में Store किया है और फिर निम्न Statement द्वार sum के मान को Applet पर Display कर दिया है:
g.drawString(“The sum of the values is:”, 10, 40);
g.drawString(s, 160, 40);
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Java Programming Language in Hindi | Page: 682 | Format: PDF