Рассмотрят следующий код:Java 8 Типа вывод с нестатическим доступом статических членов
class Test {
void accept(Consumer<Integer> c) {}
static void consumer(Integer i) {}
void foo() {
accept(this::consumer); // The method accept(Consumer<Integer>) in the type Test is not applicable for the arguments (this::consumer)
accept(Test::consumer); // Valid
}
}
Я наткнулся на это на другой день, когда случайно вызов статического метода в нестатическом способе. Я знаю, что вы не должны ставить статические методы нестационарным образом, но мне все же интересно, почему нельзя выводить тип в этом случае?
Возможно, потому, что дизайнеры не захотели повторить ошибку, которая была сделана при авторизации статических методов, которые вызывают нестационарным способом. –