Учитывая некоторые функции метода Java 8:
class Foo { Bar getBar() {} }
class Bar { Baz getBaz() {} }
Композиция из двух аксессоров выглядит так:
Function<Foo, Bar> getBarFromFoo = Foo::getBar;
Function<Bar, Baz> getBazFromBar = Bar::getBaz;
Function<Foo, Baz> getBazFromFoo = getBarFromFoo.andThen(getBazFromBar);
Есть ли более лаконичный способ? Кажется, это работает
((Function<Foo, Bar>) Foo::getBar).andThen(Bar::getBaz)
Но это довольно некрасиво. Внешние скобки имеют смысл из соображений приоритета, но зачем нужен приведение?
(Foo::getBar::getBaz
было бы неплохо, но увы...)
foo -> foo.getBar()::getBaz
? Похоже, вы слишком усложняете. Есть что-то, что мне не хватает? - person Dioxin   schedule 18.08.2017foo -> foo.getBar().getBaz()
? иначе смысла нет - person Andrew Tobilko   schedule 18.08.2017a->b
,b->c
), составляя их с помощью простых операций, таких какcompose
,andThen
Function
, во время выполнения, а не создавать все возможные случаи во время компиляции. - person Andrew Tobilko   schedule 18.08.2017foo -> bar -> bar::getBaz
- person Dioxin   schedule 18.08.2017foo -> bar -> bar::getBaz
для получения серии карт (здесь, чтобы получитьBaz
в качестве вывода). Он может вернуть что-то вродеFunction<Foo, Function<Bar, Function<Bar, Baz>>>
, что не имеет смысла - person Andrew Tobilko   schedule 18.08.2017