5 Stimmen

Java. Methode überladen

Ich habe zum Beispiel diese Klasse:

public class Col {

static void test(int a)
    {
        System.out.println("int");
    }
    public static void main(String args[])
    {
        Col.test(12);  //1

        Col.test((byte)12); //2

        Col.test((long)100); //3

    }
}

und nun interessiert mich, wie der Algorithmus dieses Codes funktioniert. Ich denke, dass diese Schritte:

1 Zeile - alle korrekte Aufrufmethode mit int-Param, perfekt.

2 Zeilen - Aufruf einer Methode mit Byte-Param...oooops. was tun? Java versuchen, byte zu int zu erweitern? Stimmt das?

3 Zeile Aufruf Methode mit long param... wieder ooops. was tun? konvertieren long zu int Java kann nicht, weil Verlust der Genauigkeit. seine versuchen? Und im Ergebnis - Exception.

Dann füge ich dies hinzu:

 public static void test(Object a)
    {
        System.out.println("Object");
    }

und wenn ein Anruf:

Col.test((long)100);

alles korrekt, keine Ausnahme Welche Beziehung besteht also zwischen dem primitiven Typ long und Object?

2voto

Mudassir Punkte 14250

Dies ist eine Funktion, die mit Java 5 eingeführt wurde. Sie heißt Autoboxing. Dabei wird ein primitiver Typ in ein Objekt umgewandelt (in Ihrem Fall long in Long). Siehe dieser Link für Einzelheiten zum Autoboxing.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X