Добавляя к существующему ответу, я не уверен, что это из-за более новой версии Java с самого вопроса, но когда я попытался скомпилировать код с помощью метода, использующего Integer в качестве параметра вместо Object , код все еще компилировался. Однако вызов с нулевым параметром по-прежнему вызывал метод параметра String во время выполнения.
Например,
public void testMethod(int i){
System.out.println("Inside int Method");
}
public void testMethod(String s){
System.out.println("Inside String Method");
}
еще даст выход:
Inside String Method
когда называют:
test1.testMethod(null);
Основной причиной этого является то, потому что строка действительно принимает нулевое, как значение и int нет. Таким образом, null классифицируется как объект String.
Возвращаясь к заданному вопросу. Тип Объект встречается только при создании нового объекта.Это делается с помощью либо литья нуля типа как объект с помощью
test1.testMethod((Object) null);
или с использованием любого типа объекта для примитивного типа данных, таких как
test1.testMethod((Integer) null);
or
test1.testMethod((Boolean) null);
или просто создать новый объект с помощью
test1.testMethod(new Test1());
следует отметить, что
test1.testMethod((String) null);
снова вызовет метод String, так как это создаст объект типа String.
Кроме того,
test1.testMethod((int) null);
and
test1.testMethod((boolean) null);
даст компиляции ошибки времени, так как логическое и INT не принимают нулевое как допустимое значение и, как межд! = Integer и логическое! = Boolean. Целочисленный и булевский тип, передаваемый объектам типа int и boolean.
+1 Это выглядело как простой вопрос, но с использованием нулевого ... Это интересно ... –
Возможный дубликат [странное поведение Java по умолчанию при перегрузке метода] (http://stackoverflow.com/questions/14789478/ странный-java-null-behavior-in-method-overloading) –
@RohitJain этот вопрос уже является дубликатом [this] (http://stackoverflow.com/questions/1545501/which-overload-will-get-selected- for-null-in-java) – mariomario