Angenommen, ich habe einen überlasteten Klasse wie untenAmbiguty und keine geeignete Methode Fehler in Java gefunden Überlastung
class Test{
public void m1(int a,float b){
System.out.println("hello");
}
public void m1(float a,int b){
System.out.println("hai");
}
public static void main(String[] args){
Test t = new Test();
t.m1(10,10);//error
t.m1(10.5f,10.6f);//error
}
}
wenn ich rufe m1()
Methode mit zwei int Werte wie m1(10,10)
der Fehler
error: reference to m1 is ambiguous, both method m1(int,float) in Test and method m1(float,int) in Test match
t.m1(10,10);
^
ist und wenn ich rufe m1()
Methode mit zwei Float-Werte wie m1(10.5f,10.6f)
Fehler ist
error: no suitable method found for m1(float,float)
t.m1(10.5f,10.6f);
^
method Test.m1(float,int) is not applicable
(actual argument float cannot be converted to int by method invocation conversion)
method Test.m1(int,float) is not applicable
(actual argument float cannot be converted to int by method invocation conversion)
Kann jemand bitte den Grund erklären, warum dieses Programm zwei verschiedene Arten von Fehlern zeigt?
Ich frage mich, warum Sie gleich Fehler erwarten? Wie sollte der Compiler _promote_ "float" zu einem "int" sein, wenn "int" der "niedere" Datentyp ist, der Datenverlust verursacht? – Tom
Ich dachte im Methodenbereich Compiler nicht gefunden die Methoden, die ich anrufe, so erwartete ich 'keine geeignete Methode Fehler' für beide Methodenaufrufe –
Und warum denkst du, dass beide Methoden nicht geeignet sind, wenn Sie sie mit ' int'? – Tom