Betrachten Sie den folgenden Code ein:Java 8 Typinferenz mit nicht-statischen Zugriff von statischen Mitglieder
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
}
}
ich über dieses neulich kam, als zufällig eine statische Methode in einer nicht-statische Art und Weise aufrufen. Ich weiß, dass Sie statische Methoden nicht auf nicht statische Weise aufrufen sollten, aber ich frage mich immer noch, warum ist es nicht möglich, den Typ in diesem Fall abzuleiten?
Wahrscheinlich, weil die Designer nicht den Fehler wiederholen wollten, der bei der Autorisierung statischer Methoden gemacht wurde, um auf nicht statische Weise aufgerufen zu werden. –