কম্পিউটার টিউটোরিয়াল

জাভাতে ভ্যার আর্গস-এ মেথড ওভারলোডিং এবং অস্পষ্টতা


জাভাতে ভেরিয়েবল আর্গুমেন্ট ব্যবহার করার সময় অস্পষ্টতা হতে পারে। এটি ঘটে কারণ দুটি মেথড নিঃসন্দেহে ডেটা মান দ্বারা কল করার জন্য ভ্যালিড হতে পারে। এর কারণে কম্পাইলার জানতে পারে না কোন মেথড কল করতে হবে।

উদাহরণ

public class Demo {    static void my_fun(double ... my_Val){       System.out.print("fun(double ...): " + "Number of args: " + my_Val.length );       for(double x : my_Val)       System.out.print(x + " ");       System.out.println();    }    static void my_fun(boolean ... my_Val){       System.out.print("fun(boolean ...) " + "The number of arguments: " + my_Val.length);       for(boolean x : my_Val)       System.out.print(x + " ");       System.out.println();    }    public static void main(String args[]){       my_fun(11.56, 34.78, 99.09, 56.66);       System.out.println("Function 1 has been successfully called");       my_fun(true, false, true, false);       System.out.println("Function 2 has been successfully called");       my_fun();       System.out.println("Function 3 has been successfully called");    } }

আউটপুট

Demo.java:23: error: reference to my_fun is ambiguous my_fun(); ^ both method my_fun(double...) in Demo and method my_fun(boolean...) in Demo match 1 error

Demo নামক একটি ক্লাসে 'my_fun' নামক একটি ফাংশন সংজ্ঞায়িত করা হয়েছে যা ভেরিয়েবল সংখ্যক ফ্লোটিং পয়েন্ট মান নেয়। মানগুলো 'for' লুপ ব্যবহার করে কনসোলে প্রিন্ট করা হয়েছে। এই ফাংশনটি ওভারলোড করা হয়েছে এবং প্যারামিটারগুলো বুলियन মান যা সংখ্যায় ভেরিয়েবল। আউটপুট 'for' লুপ ব্যবহার করে কনসোলে দেখানো হয়েছে।

main ফাংশনে 'my_fun' প্রথমে ফ্লোটিং পয়েন্ট মান দিয়ে কল করা হয়েছে, তারপর বুলিয়ান মান দিয়ে এবং তারপর কোনো প্যারামিটার ছাড়া। ফলে হওয়া এক্সেপশনটি কনসোলে দেখানো হয়েছে।


  1. জাভাতে স্ট্যাটিক বাইন্ডিং এবং ডাইনামিক বাইন্ডিং

  2. জাভাতে মেথড ওভারলোডিং বনাম মেথড ওভাররাইডিং

  3. জাভাতে মেথড ওভারলোডিং এবং টাইপ প্রোমোশন

  4. জাভাতে মেথড ওভারলোডিং