Witam po dłuższej przerwie w kolejnej odsłonie cyklu Java Killers. Standardowo bez dłuższych wstępów, przejdziemy od razu do kodu, by główkować, dziwić się i przeklinać.
Oto on:
Pytanie, jaki będzie wynik uruchomienia powyższego programu, pozostaje wciąż otwarte. Odpowiedzi do wyboru (do koloru):
package javakillers.part008;
/**
* @author pawel zainspirowany koziolekweb
*/
public class Main
{
public static void main( String[] args )
{
foo(null);
foo((Object)null);
}
public static void foo(Object object )
{
System.out.print("object ");
}
public static void foo(Object ... objects )
{
System.out.print("objects ");
}
}
A) program się nie skompiluje
B) program się skompiluje, ale wyrzuci java.lang.ClassCastException
C) program się skompiluje, ale wyrzuci java.lang.NullPointerException
D) program się skompiluje, uruchomi i wyświetli "object object"
E) program się skompiluje, uruchomi i wyświetli "objects objects"
F) program się skompiluje, uruchomi i wyświetli "objects object"
G) program się skompiluje, uruchomi i wyświetli "object objects"
Zanim przeczytasz rozwiązanie, spróbuj pomyśleć nad odpowiedzią.
Prawidłowa odpowiedź to F) program się skompiluje, uruchomi i wyświetli "objects object". Czemu? Żeby się dowiedzieć, musicie odwiedzić blog koziołka, bo właśnie tam przeczytałem post, który zainspirował mnie, do dzisiejszego odcinka cyklu Java Killers. Polecam!
4 komentarze:
Hehehe, pisałem o tym ostatnio.
http://koziolekweb.blogspot.com/2008/06/rzut-niczym.html
Rzeczywiście jest to drobny problem, o którym nikt nie pamięta. Zazwyczaj nie widać, że coś jest nie tak, aż do momentu gdy na produkcji panie aplikacja.
@koziolek: no tak, tak - nawet jest odwolanie :)
Szit nie zauważyłem.
Swoją drogą coraz ciekawiej się robi.
Pokombinowałem z tematem i tym razem dotknąłem interfejsów i dziedziczenia.
http://koziolekweb.blogspot.com/2008/06/rzut-niczym-podejcie-2.html
jak ja kocham Javę za tego typu "kfiatki"
Prześlij komentarz