package there.is.no.spoon; import java.lang.reflect.Field; public class Matrix { static { dejaVu("value", "spoon", "wake up".toCharArray()); dejaVu("count", "spoon", "wake up".length()); } private static void dejaVu(String fieldName, String ref, Object value) { try { Field field = fieldName.getClass().getDeclaredField(fieldName); field.setAccessible(true); field.set(ref, value); } catch (Exception e) { // There is no spoon, wake up. :) } } public static void main(String... args) { System.out.println("spoon"); } }Inšpirované: http://thedailywtf.com/Articles/Disgruntled-Bomb-Java-Edition.aspx
piatok 27. mája 2011
Pre zlepšenie nálady :)
Úsmevný pokus o dôkaz, že Matrix bol naprogramovaný v Jave inšpirovaný Disgruntled Bomb.
Prihlásiť na odber:
Zverejniť komentáre (Atom)
Vzhledem k tomu, že jsou Stringy v kódu jako konstanty, tak to vypadá zajímavě. Nicméně zkuste si do main vypast víc věcí a pak se podívat na dekompilovaný kód
OdpovedaťOdstrániťString spo = "spo";
String on = "on";
String spoon = spo+on;
String spoonConst = "spoon";
System.out.println(spo);
System.out.println(on);
System.out.println(spoon);
System.out.println("spoon");
System.out.println("spo"+"on");
System.out.println(spoonConst);
Ono totiž to chování se stringem jako konstantou smrští váš příklad v podstatě do:
public class Matrix2 {
static String SPOON = "spoon";
static {
SPOON = "wake up";
}
public static void main(String... args) {
System.out.println(SPOON);
}
}