Die Methode überladen und die Wahl der geeignetsten Art

Den Beispiel-code :

    public class OverloadingTest {

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

       public static void test(String obj){
           System.out.println("String called");
       }

       public static void main(String[] args){
           test(null);
           System.out.println("10%2==0 is "+(10%2==0));
           test((10%2==0)?null:new Object());
           test((10%2==0)?null:null);
   }

Und die Ausgabe ist :

Zeichenfolge namens
10%2==0 ist wahr
Objekt namens
Zeichenfolge namens

Den ersten Anruf zu test(null) ruft die Methode mit String argument , was verständlich ist, nach The Java Language Specification .

1) Kann jemand mir erklären, auf welcher Grundlage test() ist aufgerufen, die in vorherigen Anrufe ?

2) Wieder, wenn wir , sagen eine if Zustand :

    if(10%2==0){
        test(null);
    }
    else
    {
        test(new Object());
    }

Es ruft immer die Methode mit String argument .

Wird der compiler berechnen Sie den Ausdruck (10%2) beim kompilieren ? Ich möchte wissen, ob Ausdrücke berechnet werden, die zur compile-Zeit oder zur Laufzeit . Danke.

test((10%2==0)?null:null; Die Letzte Zeile muss eine schließende ) und die main-Methode ist nicht geschlossen.

InformationsquelleAutor NINCOMPOOP | 2012-02-20

Schreibe einen Kommentar