Я достаточно уверен, что приведенный ниже код действителен для кода Java 1.8:
import java.util.function.Consumer;
public class UnsolvableClass {
private Consumer<Object> func = (Object theErrorVariable) -> {};
public UnsolvableClass() {
return;
}
}
Теперь вы можете подумать: "Почему у вас есть возврат в конструкторе?" Ну, это потому, что это минимальный пример кода, который я придумал, который вызывает эту ошибку.
Обратите внимание, что вполне законно иметь оператор return в конструкторе.
javac выплевывает эту ошибку при компиляции.
UnsolvableClass.java:10: error: variable theErrorVariable might not have been initialized
return;
^
1 error
Мне нравится, как он думает, что ошибка происходит в строке "return", когда ошибка связана с... переменная "theErrorVariable" не инициализируется.
Если я удаляю строку "return", все компилируется отлично. Кроме того, если я удаляю оператор лямбда, он также компилируется отлично.
Примечание. Я попытался выполнить компиляцию с помощью компилятора Eclipse java и успешно скомпилирован.
Звучит как очень неясная ошибка в поддержке javac lambda. Я что-то пропустил?
Если это не так, и это реальная ошибка, куда я могу пойти, чтобы сообщить об этом Oracle?