public class Test {
public static void main(String[] args) throws ClassNotFoundException {
new Test().f("dfffg"); // it is running perfectly
new Test().f(1, 1); // it is giving ambiguity
}
public void f(int a,long b){
System.out.println("in int and long");
}
public void f(long a,int b){
System.out.println("in long and int");
}
public void f(String s) {
System.out.println("in String");
}
public void f(StringBuffer o) {
System.out.println("in String bufer");
}
public void f(Object o){
System.out.println("in object");
}
}
, wenn ich dies ausführen new Test().f("dfffg");
es läuft perfekt, obwohl wir überladene Methode mit String und Objekt als Parameter habenüberlastet: Ambigutiy während die Parameter sind primitiv, aber nicht, wenn es Referenztyp ist
während f (1, 1) Mehrdeutigkeit geben, die ich verstehen kann.
int kann zu long hochgestuft werden, wenn kein übereinstimmender Datentyp gefunden wird. Dies verursacht eine Funktionsmehrdeutigkeit. Wenn Sie beide Funktionen verwenden möchten, können Sie Funktionen wie f (int ... a) und f (long ... a) verwenden. Dies sind keine Lösungen für Ihr Problem, können aber zur Lösung von Mehrdeutigkeiten beitragen. –