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

    +75

    1. 1
    return new Integer(((Integer)var).intValue()+1);

    Autoboxing? Не, не слышал...

    Запостил: kostoprav, 08 Мая 2014

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

    • Интересно при этом, каков изначальный тип переменной var. По ходу автор строки ищет приключений. А если там окажется Float?
      Ответить
      • если не int и не Integer, то не скомпилится, все ок
        Ответить
        • Object var = Long.valueOf(0);
          return new Integer(((Integer)var).intValue()+1);
          Все замечательно скомпилится, а потом замечательно кинет исключение.
          Ответить
          • Это потому что кастим не к тому:
            >Object var = 0L;
            >return new Integer(((Number)var).intValue()+1);
            [fixed]
            Запись каста выглядит как говно и в рантайме говно. А если что-то выглядит как говно и работает как говно, то оно непременно им и является.
            Если в программе начинает плодится эта срань - первый признак что у кодера кривые руки.
            Ответить
    • А как это переписать? Всё негодование по поводу каста (Integer)var ?
      Ответить
      • Имхо как-то так:
        return var+1; // если var - Integer, Short или Long
        return var.intValue()+1; // если var - Number
        return ((Number)var).intValue() + 1; // если var - Object
        Ответить

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