Próbuję użyć odwołań metod do przechwytywania wywołań metod i trafiam w pewne ograniczenia. Działa to dobrze:Ograniczenia odwołań metod statycznych w języku Java 8
<T> void capture(Function<T, ?> in) {
}
private interface Foo {
String getBar();
}
capture(Foo::getBar);
Ale jeśli zmienić podpis Foo.setBar do czegoś takiego:
private interface Foo {
void setBar(String bar);
}
capture(Foo::setBar);
pojawia się błąd:
Cannot make a static reference to the non-static method setBar(String) from the type MyTest.Foo
nie jest jasne dla mnie jakie jest ograniczenie. Idealnie chciałbym użyć referencji metod do przechwytywania wywołań na standardowym ustawiaczu. Czy jest jakiś sposób to zrobić?
Czy to nawet Java? A może ta składnia jest nowa w Java 8? –
Czy możesz wysłać błąd? –
@AnubianNoob To rzeczywiście odwołuje się do metody Java8s itp. ... – Sinkingpoint