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

    +79

    1. 1
    2. 2
    3. 3
    List<String> list;
    ....
    Long num = Long.parseLong( "" + list.size() );

    Самый оригинальный способ конвертации int в Long, кот. встречал в проекте )

    Запостил: SIDS, 15 Октября 2012

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

    • А что, просто
      Long num = list.size();
      нельзя?
      Ответить
      • Вообще нет, можно
        Long num = (long) list.size();
        Но видимо писавший это человек не знал о преобразовании типов
        Ответить
        • т.е. в long не умещаются значения int и требуется явное преобразование?
          Ответить
          • Нет, Вы немного не поняли.
            Компилятор сожрет следующее:
            int i = 1;
            long l = i;
            Но не сожрет:
            int i = 1;
            Long l = i;
            Потому что int переменная автоматически оборачивается в объект Integer, написав Long l = i, вы пытаетесь приравнять Long и Integer
            Ответить
            • Вот оно чо. Объектная обёрточка. А
              Long l = 1;
              сожрет? Или тоже надо:
              Long l = (long)1;
              ?
              Ответить
              • нет, не сожрет ) надо явное преобразование делать (long). потому что по умолчанию обертка для констант - Integer
                Можно написать
                Long l = 1L;
                Ответить
    • А зачем вам Long?
      Ответить
      • Чтоб я знал
        Ответить
        • Просто Long обычно используется там, где может быть null. Зачем раньше времени создавать объект, если достаточно просто long, живущего на стеке, который потом уже можно и обернуть в месте использования. Хотя, без контекста тяжело судить, потому и спросил.
          Ответить
      • - Давайте типами меряться...
        - У меня Long. А у тебя?
        Ответить
        • TDlinniyTzeliy
          Ответить
          • > TDlinniyTzeliy
            смесь TTarasb и 1С?
            p.s. кстати, для меня только сейчас открылась истина по наименованию классов от Борланда
            Ответить
      • кстати, Long не только длинный, но и толстый
        Ответить
      • > А зачем вам Long?
        скорей всего для jpa или что-то вроде
        Ответить
    • >"" + list.size()
      Я обычно тоже так toStringаю. null-safe.
      Ответить
      • а где тут null-safe?
        если list - null, то list.size() вызовет нульпоинтер эксепшн )
        Ответить

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