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

    −50

    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
    public static List<Period> getPeriods(final int id, final Date startDate, final Date endDate) throws SomeException {
        final List<?>[] result = new List<?>[1];
    
        doInTransaction(new Script() {
            @Override
            public void execute() throws AnotherException {
                // Some business logic
                //...
                result[0] = allPeriods;
            }
        });
        return (List<Period>) result[0];
    }

    Оригинальный способ присвоить final переменной значение.

    Запостил: Destiner, 29 Сентября 2016

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

    • показать все, что скрытоList<?>[]

      Не скомпилица
      Ответить
    • Где здесь присвоение final переменной?
      Ответить
      • Нигде, автор обкурился
        Ответить
        • Если нет ключевого слова final, но переменная не изменяется, переменная является effectively final.
          В байткоде нет никакой разницы между final и effectively final.
          В анонимных классах и лямбдах должны использоваться final/effectively final переменные, так как в джаве замыкания отсутствуют.
          Ответить
      • Нигде, ты прав
        Ответить
    • Ну так это вроде типично для жабы. Помню, eclipse похожую ерунду генерил при некоторых рефакторингах.
      У doInTransaction нет варианта, который возвращает значение? Типа
      T doInTransaction(Callable<T>)
      Ответить
    • А что вы ещё хотели от Java?
      Ответить
    • Ребят. Это я долбаеб или можно было обойтись вообще без коллекции? Нахера она там если присваивается жестко result[0] = ...?
      Почему нельзя было просто вернуть объект Period? либо Optional<Period>
      Ответить

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