Java Anonymous Class: सामान्यतया हम जिन Class को Inner Classes के रूप में Define करते हैं, वे Classes Current Outer Class के अलावा किसी भी अन्य Outer Class के लिए Accessible नहीं होती हैं। इसलिए हम ऐसी Classes को बिना उनका नाम Specify किए हुए भी Define कर सकते हैं।
यानी हम Inner Classes Create करते समय Classes को Nameless Classes के रूप में Define कर सकते हैं। एक ऐसी Inner Class जिसका कोई नाम नहीं होता है, Anonymous Class कहलाती है। Event Handling के लिए हम जिन Inner Classes को Define करते हैं, उन Classes को Anonymous Class के रूप में भी परिभाषित किया जा सकता है।
निम्न Program में हमने Status bar में “Mouse Pressed” String Display करने वाले Program को ही एक Anonymous Class का Use करते हुए Modify किया है। Program निम्नानुसार है:
// File Name : AnonymousInnerApplet.java import java.awt.*; import java.awt.event.*; import java.applet.*; public class AnonymousInnerApplet extends Applet { public void init() { addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent mousEvnt) { showStatus("Mouse Pressed"); } }); } }
इस Program में AnonymousInnerApplet नाम की एक ही Top-Level Class है। इस Program में Applet के init() Method में addMouseListener() Method को Call किया गया है। ये Method Event Generate करने वाले Source Class यानी AnonymousInnerApplet Applet Class को Event Listener करने वाली Listener Class यानी AnonymousInnerApplet Applet Class से Register करता है। इस Method में Argument के रूप में हमने एक Inner Class को Define किया है, जो कि एक Anonymous Class है, जिसका कोई नाम नहीं है। चलिए, addMouseListener() Method के इस Argument को समझने की कोशिश करते हैं।
new MouseAdapter() {. . . } Statement Compiler को ये Instruction देता है कि Braces के बीच Define किए गए Syntaxes एक Anonymous Inner Class के Statements हैं। इसलिए ये Inner Class MouseAdapter Class को Extend करता है। इस नई Class का कोई नाम नहीं होता है, लेकिन जैसे ही ये Expression Execute होता है, MouseAdapter Class Inherit हो जाता है।
चूंकि इस Inner Class को AnonymousInnerApplet Class के Scope में Define किया गया है, इसलिए ये Inner Class AnonymousInnerApplet Class के किसी भी Data Member व Method को Access करने में सक्षम है। इसीलिए ये Class AnonymousInnerApplet Class showStatus() Method को Directly Call कर सकता है।
यदि हम सरल शब्दों में कहें तो addMouseListener() Method Event Generate करने वाली Source AnonymousInnerApplet Class को MouseAdapter Listener Class से Directly Register कर देता है, क्योंकि इस Method में Argument के रूप में हमेंशा Listener Class के एक Object का Reference Argument के रूप में दिया जाता है, जबकि इस Program में हमने Directly MouseAdapter Class का एक Nameless Object “new MouseAdapter()” Statement द्वारा Pass कर दिया है। इसलिए Create होने वाले Nameless Listener Object से Current Applet Class Register हो जाता है और इस Applet में जितने भी Events Generate होते हैं, उन्हें वह Nameless Listener Listen करता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Java Programming Language in Hindi | Page: 682 | Format: PDF