Я пытаюсь использовать ссылки на методы для захвата вызовов методов и сталкиваюсь с некоторыми ограничениями. Это отлично работает:
<T> void capture(Function<T, ?> in) {
}
private interface Foo {
String getBar();
}
capture(Foo::getBar);
Но если я изменю подпись Foo.setBar на что-то вроде этого:
private interface Foo {
void setBar(String bar);
}
capture(Foo::setBar);
Я получаю сообщение об ошибке:
Cannot make a static reference to the non-static method setBar(String) from the type MyTest.Foo
Что за ограничение мне непонятно. В идеале я хотел бы использовать ссылки на методы для захвата вызовов стандартного установщика. Есть какой-либо способ сделать это?
static
? - person meriton   schedule 22.05.2014Foo
и вызывает метод для этой ссылки. - person Jon Skeet   schedule 22.05.2014