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

    +69

    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
    static {
    	Unsafe u = null;
    	Exception ex = null;
    	try {
    		Class objectStreamClass = Class.forName("sun.misc.Unsafe");
    		Field unsafeField = objectStreamClass.getDeclaredField("theUnsafe");
    		unsafeField.setAccessible(true);
    		u = (Unsafe) unsafeField.get(null);
    	} catch (ClassNotFoundException e) {
    		ex = e;
    	} catch (SecurityException e) {
    		ex = e;
    	} catch (NoSuchFieldException e) {
    		ex = e;
    	} catch (IllegalArgumentException e) {
    		ex = e;
    	} catch (IllegalAccessException e) {
    		ex = e;
    	}
    	exception = ex;
    	unsafe = u;
    }

    xstream-1.2.2 - древнота, но попахивает...

    Запостил: kostoprav, 01 Июля 2013

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

    • я не знаю точно как в Яве но в пышечке при любом раскладе будет подниматься IllegalAccessException
      Ответить
    • сам уже факт использования sun.misc.Unsafe крепко настораживает
      Ответить
    • показать все, что скрыто
      * g o a t s e x * g o a t s e x * g o a t s e x *
      g                                               g  
      o /     \             \            /    \       o
      a|       |             \          |      |      a
      t|       `.             |         |       :     t
      s`        |             |        \|       |     s
      e \       | /       /  \\\   --__ \\       :    e
      x  \      \/   _--~~          ~--__| \     |    x  
      *   \      \_-~                    ~-_\    |    *
      g    \_     \        _.--------.______\|   |    g
      o      \     \______// _ ___ _ (_(__>  \   |    o
      a       \   .  C ___)  ______ (_(____>  |  /    a
      t       /\ |   C ____)/      \ (_____>  |_/     t
      s      / /\|   C_____)       |  (___>   /  \    s
      e     |   (   _C_____)\______/  // _/ /     \   e
      x     |    \  |__   \\_________// (__/       |  x
      *    | \    \____)   `----   --'             |  *
      g    |  \_          ___\       /_          _/ | g
      o   |              /    |     |  \            | o
      a   |             |    /       \  \           | a
      t   |          / /    |         |  \           |t
      s   |         / /      \__/\___/    |          |s
      e  |           /        |    |       |         |e
      x  |          |         |    |       |         |x
      * g o a t s e x * g o a t s e x * g o a t s e x *
      Ответить
      • не соизволити ли вы получить пендоля и убрать свою грязную задницу отюда эксбиционист!?.
        Ответить
        • Обращение выделяется запятыми.
          Ответить
    • static {
      	try {
      		Class objectStreamClass = Class.forName("sun.misc.Unsafe");
      		Field unsafeField = objectStreamClass.getDeclaredField("theUnsafe");
      		unsafeField.setAccessible(true);
      		unsafe = (Unsafe) unsafeField.get(null);
      	} catch (ClassNotFoundException | SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
      		exception = e;
      	}
      }


      Исправлено.
      Ответить
      • О. А с какой версии жабы так можно?
        Ответить
      • Непонятно, что исправлено то? Минимальная версия поддерживаемой кодом джавы?
        код в порядке. Написан код, для того, чтобы через рефлексию подгрузить класслоадером класс, потому что если его предварительно не загрузить, то через Unsafe.getUnsafe экземпляр theUnstafe не получить. Экзепешн ловиться исключительно для отладки дебаггером.
        Ответить
    • @Unsafe(unsafe = Unsafe.UNSAFE)
      Unsafe unsafe = (Unsafe) unsafeField.unsafeGet(Unsafe.UNSAFE);
      Ответить

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