sobota, 21 czerwca 2008

Java Killers #008

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:


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 ");
}

}


Pytanie, jaki będzie wynik uruchomienia powyższego programu, pozostaje wciąż otwarte. Odpowiedzi do wyboru (do koloru):

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:

koziołek pisze...

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.

Paweł Szulc pisze...

@koziolek: no tak, tak - nawet jest odwolanie :)

koziołek pisze...

Szit nie zauważyłem.

Swoją drogą coraz ciekawiej się robi.

koziołek pisze...

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"