আমি এই স্নিপেটকে হোঁচট খেয়েছি:
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(long a, long b) {
System.out.println("In long " + (a + b));
}
public static void printSum(double a, long b) {
System.out.println("In doubleLONG " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
এটি একটি সংকলন ত্রুটির ফলস্বরূপ:
ত্রুটি: (15, 9) জাভা: প্রিন্টসামের রেফারেন্সটি প্যারাম টেস্টে দুটি পদ্ধতি মুদ্রণসাম (ইনট, ডাবল) এবং প্যারামটেষ্ট ম্যাচে পদ্ধতি প্রিন্টসাম (দীর্ঘ, দীর্ঘ)
এই অস্পষ্টতা কেমন? প্রথম প্যারামিটারটি ইতিমধ্যে কোনও ইনট হিসাবে এই ক্ষেত্রে কেবল দ্বিতীয় প্যারামিটারটি প্রচার করা উচিত নয়? এক্ষেত্রে প্রথম পরমকে পদোন্নতি দেওয়া উচিত নয়?
আমি অন্য পদ্ধতি যুক্ত করার জন্য কোডটি আপডেট করলে সংকলনটি সফল হয়:
public static void printSum(int a, long b) {
System.out.println(String.format("%s, %s ", a, b));
}
আমাকে কেবল স্পষ্ট করতে প্রসারিত করুন। নীচের কোডটি অস্পষ্টতার ফলস্বরূপ:
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(long a, long b) {
System.out.println("In long " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
তারপর এই কোড নিচে এছাড়াও অস্পষ্টতা ফলাফল:
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(double a, long b) {
System.out.println("In doubleLONG " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
তবে এটির দ্ব্যর্থতার ফলে আসে না :
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(long a, double b) {
System.out.println("In longDBL " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
Error:(15, 9) java: reference to printSum is ambiguous both method printSum(int,double) in ParamTest and method printSum(long,long) in ParamTest match
- এটি যে পদ্ধতিটি দ্ব্যর্থক তা নয়, এটি সেই পদ্ধতির কল যা অস্পষ্ট।