У меня есть воспроизводимый тестовый пример:
public class TestCase {
private final java.util.function.Consumer<Object> emptyCallback = result -> {};
public TestCase() {
return;
}
public static void main(String... args) {
new TestCase();
}
}
Использование Java 8, обновление 51 (Oracle JDK). Это невозможно скомпилировать, используя как IntelliJ, так и javac.
Выход IntelliJ:
Error(6, 7): java: variable result might not have been initialized
Выход javac:
TestCase.java:6: error: Variable result might not have been initialized
return;
^
1 error
Теперь странно, что удаление return;
или Consumer
исправляет ошибку. Является ли это ошибкой java, или есть что-то из языка, который я здесь отсутствует?
Изменить: это не дубликат Как конструктор может вернуть значение, это на самом деле конструктор и не относится к возвращаемому значению конструктора, но переменной инициализации.