Zu Ostern hab ich ein kleines Rätsel für euch, welches mir selbst vor kurzem zugeschickt wurde:
public class DontSayIt { public static void main(String args[]) { //? System.out.println(new String("Don't visit nullpointer.at!")); } }
Wie kann ich anstelle des Kommentars in diesen Code einfügen um die Ausgabe des Programms in:
Visit nullpointer.at!
umzuwandeln?
Es gibt hierfür einige richtige Lösungen, die trivialste (in meinen Augen) liefere ich gleich mit, aber vielleicht findet ihr ja eine noch einfachere.
Einfach markieren um den Text sichtbar zu machen:
public class DontSayIt { public static void main(String args[]) { class String { public String(java.lang.String s) { } @Override public java.lang.String toString() { return "Visit nullpointer.at!"; } } System.out.println(new String("Don't visit nullpointer.at!")); } }
Wer jetzt auf den Geschmack gekommen ist, dem empfehle ich folgendes Buch:
Java Puzzlers: Traps, Pitfalls, and Corner Cases
Das Buch von Joshua Bloch und Neal Gafter ist in englischer Sprache verfasst und beansprucht die grauen Zellen auch von erfahrenen Lesern. Die vorgestellten Codestücke wirken oft relativ trivial, dennoch ist nicht immer auf den ersten Blick ersichtlich, wieso sie nicht so laufen wie vermutet. Eine paar Beispiele haben sie selbst auf der Homepage zum Buch veröffentlicht: http://www.javapuzzlers.com/
Ich konnte selbst damit schon so manches Aha Erlebnis im gemütlichen Sofa verzeichnen und hab wohl noch so einige vor mir.