Ich versuche Methode Überlastung zu verstehen, und ich habe diese Methoden.Java-Methode Überlastung und varargs
public void method(int a){
System.out.println("int a");
}
//implementing interface method
@Override
public void method() {
System.out.println("interface");
}
//varargs
public void method(int ... a){
System.out.println("int ... a");
}
Nachdem sie mit diesen Parametern aufrufen,
int[] a = new int[5];
stack.method();
stack.method(1);
stack.method(5,6);
stack.method(null);
stack.method(a);
Ich habe diese Ergebnisse:
Schnittstelle
int a
int ... ein
int ... a
int ... a
Soweit ich weiß, kompiliert, sollte das Programm nicht, beacuse der Mehrdeutigkeit, aber es funktioniert trotzdem. Sollte der Compiler keinen Fehler ausgeben?
int ist ein Basistyp, null ist für Objekte. Jeder Basistyp hat einen Standardwert (int = 0), wenn Sie keine angeben.Da ein Array per se ein Objekt ist, wird null als Vararg-Argument interpretiert, da Basistypen Arent-Referenzen sind und daher nicht Null sein können. So einfach ist das. –