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.
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

1 komentár:

  1. 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
    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);
    }

    }

    OdpovedaťOdstrániť