¿Cómo funciona el compilador de Java "método más específica llamando regla de" trabajo?

ASH:

Soy incapaz de entender cómo lo hace java "La elección de la más específica Método" regla en función de la sobrecarga de obras.

Tengo una clase en la que se alcanza la sobrecarga de funciones. Hay dos funciones con el mismo nombre "espectáculo". Una vez que acepta el argumento Tipo de objeto y otro acepta tipo String.

Voy a llamar a la función de propagación nula. El método con el argumento de tipo String se llama.

class Test
{

    public void show(String s)
    {
        System.out.println("hi");
    }

    public void show(Object o)
    {
        System.out.println("hello");
    }


    public static void main(String s[])
    {
        Test t = new Test();
        t.show(null);
    }
}

La salida será "Hola". Por favor, me ayudan a entender la explicación.

jsvilling:

Java siempre tratará de usar la versión más específica de un método que está disponible.

Los dos métodos

public void show(Object o) { ... }

public void show(String s) { ... }

podría tomar nullcomo un valor válido. En este escenario la sobrecarga de tomar un Stringparámetro se utiliza, porque Stringes más específico que Object.

Si se agrega un tercer método

public void show(Integer t) { ... }

su código no se compilará más porque Stringy Integerno están relacionados. Ninguno de los dos es más específico que el otro y la compilación no es capaz de decidir cuál usar.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=316033&siteId=1
Recomendado
Clasificación