varsayalım hata I m1(10,10)
gibi m1()
yöntemi ile iki int değerleri çağrı zamanAmbiguty ve uygun bir yöntem olup
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
}
}
aşağıdaki gibi bir aşırı sınıf olan aşırı Java hata bulundu
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);
^
ve m1(10.5f,10.6f)
gibi iki float değeriyle m1()
yöntemini çağırdığımda
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)
Neden herkes bunun nedenini açıklayabilir, neden bu program iki farklı hata türünü gösterir? Bir float
beklediği bir yöntemle ilgilidir int
bağımsız değişken geçmesi için çalışıyoruz
Neden eşit hatalar beklediğini merak ediyorum? "Int", veri kaybına neden olan "daha düşük" veri türü olduğunda, derleyici _promote_ 'ın' int''sine nasıl geçmelidir? – Tom
Yöntem alanı derleyicisinin çağırdığım yöntemleri bulamadığım için her iki yöntem için de uygun bir yöntem hatası beklenmediğini umuyordum –
Ve neden her iki yöntemin de uygun olmadığını düşünüyorsunuz? int'? – Tom