Почему это лямбда-выражение не может автоматически загружаться / доставляться поставщику?

При вызове функции, у которой есть параметр Supplier<O>... и ввод лямбд по мере необходимости. Я применил следующую ошибку и не позволил ide (eclipse-oxygen) построить проект

Internal compiler error: java.lang.UnsupportedOperationException: no glb for [public abstract class java.lang.Number

Родительский метод похож на

Foo foo1;
Foo foo2;

public < O > O run( Function< Foo, O > func ){
    if( func == null )
        return null;
    return firstNotNull( () -> func.apply( foo1 ),
                         () -> func.apply( foo2 ) );
}

и дочерний метод:

@SafeVarargs
public static final < O > O firstNotNull( Supplier< O >... funcs ){
    for( Supplier< O > func : funcs ){
        O obj = func.get();
        if( obj != null )
            return obj;
    }
    return null;
}

Возвращаясь к приведенной ошибке, номер класса не упоминается в классе; все же основной Java-класс давал ошибки при компиляции.

Однако при редактировании родительского

public < O > O run( Function< Foo, O > func ){
    if( func == null )
        return null;
    return firstNotNull( (Supplier< O >) () -> func.apply( foo1 ),
                         (Supplier< O >) () -> func.apply( foo2 ) );
}

error больше не происходит, и среда IDE успешно создается и соответствует требованиям. Я пишу этот пост, так как не смог найти аналогичный пост в Интернете, кроме предложения удалить неработающие компоновщики из Eclipse, что не работает в этом варианте проблемы; таким образом я регистрирую эту помощь другим разработчикам с подобной проблемой.

Я также прошу выяснить, какая ошибка происходит и почему это происходит?

PS Я заметил, что это стало проблемой только после обновления Java до 8.0_151 от 8.0_144,

Обновить:

Я изменил версию Java с 8u151 на 8u152 и попробовал 9, ошибка все еще присутствует в этом рабочем пространстве. Тем не менее, я сделал новый проект в Eclipse, чтобы воссоздать ошибку, я потерпел неудачу, даже если я изменил Java-версии. Вывод: похоже, что eclipse выдает ошибку, Java Builder и Spring Project Builder выдают одну и ту же ошибку.

0 ответов

Другие вопросы по тегам