1. Java / Говнокод #21823

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    /*
    Было задание:  
    
    Дополните класс Main
    public class Main {
     *//* вставить код сюда *//*
     public static void main(String[] args){}
    }
    ...так, чтобы программа выдавала "Test". 
    
    Решив, что мы нихрена не сможем сделать, так как main 
    мы бы не смогли поменять, то решили исполнить 
    роль говнокодера в самом прекрасном исполнении...
    */
    
    public class Main {
        static int i = a();
    
        static int a() {
            System.out.println("Test");
            return 0;
        }
    
        public static void main(String[] args) {}
    }
    
    /* И ЭТО ЕЩЁ И РАБОТАЕТ! */

    Странное задание...

    Запостил: VladislavSavvateev, 12 Декабря 2016

    Комментарии (4) RSS

    • Учите матчасть, блядь.
      https://ideone.com/hN44xE
      Ответить
    • Интересно, а какой-нибудь С++ сможет гарантировать, что std::cout инициализируется _до_ вызова статического конструктора внутри бинари? :)
      Ответить
      • Нет.

        Да даже джаву можно забаговать, если устроить циклическую зависимость. Можно увидеть, как final переменная меняет значение с null на что-то другое...
        Ответить
        • >>Можно увидеть, как final переменная меняет значение с null
          Достаточно сделать "leak of this" в соседний поток
          Ответить

    Добавить комментарий