Неверный тип в стеке операндов… при использовании jdk 8, лямбда-выражения с анонимными внутренними классами не работают, почему?

Выполнение кода ниже приводит к сообщению об ошибке.Bad type on operand stack

public static void main(String args[]) {
        TransformService transformService = (inputs) -> {
            return new ArrayList(3) {{
                add("one");
                add("two");
                add("three");
            }};
        };

        Collection inputs = new HashSet(2) {{
            add(5);
            add(7);
        }};
        Collection results = transformService.transform(inputs);
        System.out.println(results.size());
    }

    public interface TransformService {
        Collection transform(Collection inputs);
    }

Однако удаление инициализации с двойной скобкой (анонимные внутренние классы) в lamda позволяет коду работать должным образом, почему? Ниже работает:

public class SecondLambda {
    public static void main(String args[]) {
        TransformService transformService = (inputs) -> {
            Collection results = new ArrayList(3);
            results.add("one");
            results.add("two");
            results.add("three");

            return results;
        };

        Collection inputs = new HashSet(2) {{
            add(5);
            add(7);
        }};
        Collection results = transformService.transform(inputs);
        System.out.println(results.size());
    }

    public interface TransformService {
        Collection transform(Collection inputs);
    }
}

Ошибка компилятора? В конце концов, это ранняя версия доступа ...

(Это выигралт, если у вас нет последней версииJDK 8 Lambda скачать.)

Ответы на вопрос(3)

Ваш ответ на вопрос