Я понятия не имею, как задать этот вопрос или какое название использовать. Надеюсь, я не нарушу никаких правил. В любом случае, может кто-нибудь объяснить мне следующее поведение? У меня есть этот код:Java null соответствует Double
X x = new X();
x.dosmth(null);
static class X{
void dosmth(Object obj) { System.out.println("X:Object"); }
void dosmth(Double obj) { System.out.println("X:Double"); }
void dosmth(int obj) { System.out.println("X:int"); }
void dosmth(double obj) { System.out.println("X:double"); }
void dosmth(char obj) { System.out.println("X:char"); }
void dosmth(byte obj) { System.out.println("X:byte"); }
}
Что я получаю это:
X:Double
Почему он игнорирует полностью нитевидные
void dosmth(Object obj) { System.out.println("X:Object"); }
И почему нуль соответствует двойной и не объект?
Кроме того, если я добавить строку:
void dosmth(Integer obj) {System.out.println("X:Integer"); }
я получаю следующее сообщение об ошибке:
both method dosmth(java.lang.Integer) and method dosmth(java.lang.Double) match
Возможно, стоит упомянуть, что вы можете придать null объекту, если это необходимо. – FINDarkside
@FINDarkside Конечно, добавлю. Спасибо – Eran
Это имеет смысл! Спасибо! –