Unabhängig davon, ob Sie Methodenverweise, Lambda-Ausdrücke oder normale Methodenaufrufe verwenden, erfordert eine Instanzmethode eine geeignete Instanz für den Aufruf. Die Instanz kann durch den Funktionsaufruf geliefert werden, z. Wenn forEach
eine BiConsumer<Chapter3,String>
erwartet, hat es funktioniert. Aber da forEach
in Ihrem Fall eine Consumer<String>
erwartet, gibt es keine Instanz von Chapter3
im Bereich. Sie können dieses Problem beheben leicht durch entweder, Chapter3.print
zu einem static
Verfahren zu ändern oder durch eine Instanz als Ziel für den Methodenaufruf bereitstellt:
public class Chapter3 {
public void print(String s) {
System.out.println(s);
}
public static void main(String[] args) {
Arrays.asList("a", "b", "c").forEach(new Chapter3()::print);
}
}
Hier das Ergebnis new Chapter3()
, eine neue Instanz von Chapter3
, wird erfasst werden die Methodennachweis auf seine print
Methode und eine Consumer<String>
Aufruf der Methode für diese Instanz kann konstruiert werden.
eine Zeile Antwort ist: es gibt keine Instanz von Chapter3 im Bereich ..... danke, Sie löste meine Zweifel. –