Nowicjusz Java tutaj; Jestem znacznie bardziej komfortowe w C#. To powiedziawszy, następujące zagadki mnie. Piszę niektóre klasy przeciążone z różnymi sygnaturami parametrów w Javie. Jednak nie może wydawać się rozróżniać pomiędzy Obiektem i podwójnym. Jednak nie ma problemu z Object i Double. Czy ktoś może wyjaśnić, co się dzieje?Dlaczego Java nie może odróżnić obiektów od liczb?
public void item(Object a, Object b, String c, String d) {/*Stuff*/}
public void item(double a, double b, String c, String d) {/*Stuff*/}
public void UseIt(double a, double b, Double c, Double d)
{
item(a, b, someString, someOtherString); // Claims it's ambiguous
}
czy jest to tylko przypadek mojego idystemowego systemu rozwoju?
Przykro nam z przykładu; to jest jak te, które się nie powiodły (których tak naprawdę tu nie mogę tu podać) i popełniłem błąd, nie wypróbowując go przed wpisaniem go ...
Twój kod faktycznie działa dla mnie. Właśnie skompilowałem tę klasę: public class Test { public void item (double a, double b, String c, String d) {/ * stuff * /} publiczny element typu void (obiekt a, obiekt b, ciąg c, ciąg d) {/ * Rzeczy * /} publiczny void UseIt (double a, double b, double c, Double d) { item (a, b, "", ""); // Twierdza, że jest niejednoznaczny: } } –
podajesz dwa podwójne argumenty w łańcuchu! –
Argumenty b, c, d to po prostu czerwone śledzie. –