Java Annotation in Bangla ( জাভা এনোটেশন )

Java annotation কি?

Java annotation হল এমন একটি জিনিস যা কোডের কোন class,method,field ,interface এগুলার জন্য কম্পাইলারকে কিছু অতিরিক্ত তথ্য প্রদান করে। Annotation শুরু হয় “@” চিহ্ন দিয়ে।
উদাহরণ- @Override , @Deprecated ইত্যাদি।

কেন এই Java annotation ?

একটা উদাহরণ দিয়ে বোঝানো যাক।আমরা অনেক সময় একটি ক্লাসকে Inherit করি।তখন আমাদের সেই Parent class এর কোন মেথডকে
Override করার দরকার হয়।আমরা তাই তখন যেই মেথডটিকে Override করব সেই মেথডের উপরে @Override এনোটেশনটি ব্যবহার করি।

একবারও কি প্রশ্ন এটি না লেখলেও কি মেথডটি Over ride হবে ? উত্তর হচ্ছে – হ্যা হবে।তাহলে আমরা কেন এটি দিব যদি এইটা না ছাড়াই মেথডটি Over ride হয় ? এবার একটি সিনারিও চিন্তা করা যায়। নিচের কোডে খেয়াল করুন।

class A{
        public void show(){
            System.out.println("Show A");
        }
    }

class B extends A {
        public void show(){
            super.show();
            System.out.println("Show B");
        }
    }


 public static void main(String args[]) 
     { 
         B obj = new B(); 
         obj.show(); 
     } 

আইপুট হবে

Show A
Show B 

হ্যা প্রোগ্রামটি ঠিক আছে।কিন্তু যখন প্রোডাকশন লাইনে কাজ করবেন হাজার হাজার লাইনের কোড লিখে আপনাকে কাজ করতে হবে।তাই তখন কোড লেখাতেও ভুল হতে পারে।হওয়াটাই স্বাভাবিক।আপনি যদি ভুলে কখনো class B এর show() মেথডটি ভুলে লিখে ফেলেন SHOW() অথবা showw() তাহলে কিন্তু আউটপুট আর আগের মত Show A।

Show B না এসে আসবে খালি Show A ।কারন এই A এর show() মেথডটি তার child B তে এসে Override হচ্ছেনা।আর ওভাররাইট হবার মুল শর্তই হল অবশ্যই পেরেন্ট ক্লাসের মেথড আর চাইল্ড ক্লাসের ওই মেথডকে সেম নামের হতে হবে।কিন্তু আপনি যেহেতু লিখতে ভূল করেছেন তাই আর তা সেম নামের হবে না।ফলে ওভাররাইট হবে না।

এখন কথা হচ্ছে এমন ভুল হতেই পারে আর এই ভুল যদি রান টাইম বা আপনার এপ্লিকেশন যদি চলমান অবস্থায় থাকে তখন হয় তা খুব ক্ষতির কারণ হতে পারে।তাই আপনাকে অবশ্যই এই ভুল যেন না হয় তার জন্য একটি ব্যবস্থা নিতে হবে যা আপনি ভুল করছেন নাকি তা কোড করার সময়ই বা আপনার কম্পাইল টাইমে আপনার IDE আপনাকে ধরিয়ে দিবে।

ফলে এখানে @Override এনোটেশনের মাধ্যমে আমরা কম্পাইলারকে কিছু অতিরিক্ত তথ্য দিচ্ছি যে আমি এখন যেই মেথডটি লিখছি তা পেরেন্ট ক্লাসের একটি মেথডের ওভার রাইট করা মেথড এবং কোডার যদি কখনো এই মেথডটি লিখার সময় কোন ভুল করে তাহলে তাকে জানিয়ে দাও কম্পাইল টাইমেই । নিচের কোডে খেয়াল করি।

@Override 
public void SHOW(){
            super.show();
            System.out.println("Show B");
        }


এখানে কিন্তু কম্পাইলার এরর দেখাবে কারন আমি এখানে ওভাররাইট এনোটেশন দিয়েছি।তার মানে যেই মেথডটা লিখব সেম নামে অবশ্যই পেরেন্ট ক্লাসে একটি মেথড আছে ।কিন্তু কম্পাইলার দেখলো SHOW () নামের কোন মেথড নেই, আছে show () নামের মেথড।তার মানে সে এখানে কম্পাইল এরর প্রদান করার মাধ্যমে আমাদের কোড করার সময় ভুল সুধরে দিল।

পরিশেষে আমরা দেখছি যে ,এনোটেশন আসলে কম্পাইলেশন টাইমে জাভার যে কোন কিছুকে কিছু অতিরিক্ত তথ্য দিয়ে কম্পাইলারকে সাহায্য করে।

জাভা এনোটেশন কত প্রকার এবং কি কি?

জাভা এনোটেশন মুলত দুই প্রকার –
১) কাস্টম বা ইউজার ডিফাইন এনোটেশন
২)বিল্ড ইন এনোটেশন

কাস্টম বা ইউজার ডিফাইন এনোটেশন – কাস্টম এনোটেশন হল ইউজার যখন নিজেই কোন এনোটেশন বানায় তখন তা কাস্টম এনোটেশন হয়।

বিল্ড ইন এনোটেশন – জাভার সাথে কিছু এনোটেশন আগে থেকেই করে দেয়া থাকে এগুলো হল বিল্ড ইন এনোটেশন ।

এখন কতগুলো বিল্ড ইন এনোটেশন নিয়ে আলাপ করা যাক। এখানে
১) @Override
২) @SuppressWarnings
৩) @Deprecated

@Override নিয়ে আমরা ইতোমধ্যে আলোচনা করেছি।

@SuppressWarnings কম্পাইল করার সময় অনেক সময় অনেক ধরনের ওয়ার্নিং বা সতর্কতা দেখায়। মানে কম্পাইলার কোডারকে কিছু বিষয়ে সাবধানতার মেসেজ দেয়।এগুলা সব যে আমলে নিতে হবে এমনটা না।অনেক সময় আপনি জানেন যে আপনার কোডই ঠিক।কম্পাইলার তবুও অনেক সময় যদি আপনাকে ওয়ার্নিং দেখায় আপনি চাইলে এই ওয়ার্নিং বন্ধ করতে পারেন এই এনোটেশন ব্যবহার করে।
উদাহরন – @SuppressWarnings(“unchecked”) ।এটির মাধ্যমে আপনি unchecked ক্যাটাগরির ওয়ার্নিংগুলো কম্পাইল টাইমে মুছে দিতে পারেন

@Deprecated ধরেন একটা এপ্লিকেশনে আপনি একটা মেথড ব্যবহার করেছিলেন অনেক আগে।আপনি এখন চাচ্ছেন এইটা বাদ দিয়ে দিবেন।আপনি যদি এখন হুট করে এটিকে নাই করে দেন তাহলে আপনার প্রজেক্টের অন্য ডেভেলপাররা অনেক জায়গায় এই মেথডটি না পেয়ে অনেক ধরনের এরর পেতে পারে।তাই আপনি তাদের সতর্ক করার জন্য এই এনোটেশনটি ব্যবহার করতে পারেন যা দিয়ে বোঝাবে যে আপনি এখনো এইটিকে রাখছেন বাট পরবর্তী যেকোন সময় তা মুছে দিতে পারেন।এই এনোটেশনটি ব্যবহারের কারনে আপনি আপনার প্রজেক্টে এই মেথডটি যখন কেউ ব্যবহার করতে যাবে তখন কম্পাইল টাইমে সে কিছু ওয়ার্নিং পাবে।

এনোটেশন যে শুধু কম্পাইল টাইমেই কাজ করে ব্যাপারটা এমন না।অনেক সময় অনেক কাস্টম এনোটেশনকে আমরা রানটাইমেও কাজ করাতে পারি।

এখন প্রশ্ন আসতে পারে কেন কাস্টম এনোটেশন লিখি আমরা।বিস্তারিত জানতে এখানে ক্লিক করুন।আর আমার লেখাতে অনেক ভুলভ্রান্তি থাকতে পারে।দয়া করে ক্ষমাসুন্দর চোখে দেখবেন এবং কমেন্ট করে জানাবেন।ধন্যবাদ সময় দেয়ার জন্য।

রেফারেন্স –

লিংক-১

লিংক-২

লিংক-৩

লিংক-৪

লিংক-৫

ফেসবুক এ শেয়ার করুন

Leave a Reply

Your email address will not be published. Required fields are marked *