你可以把它分成两行:
Stream>> stream = Stream
.of(classA::eval, classB::eval, classC::eval);
Optional out = stream.map(f -> f.apply(input))
.filter(Optional::isPresent)
.map(Optional::get)
.findFirst();
或使用铸造:
Optional out = Stream.of(
(>>)classA::eval,
classB::eval,
classC::eval)
.map(f -> f.apply(input))
.filter(Optional::isPresent)
.map(Optional::get)
.findFirst();
但我认为你不能避免指定Stream元素的类型 – Function< Input,Optional< Output>> – 某处,否则编译器无法从方法引用中推断出它.