Java fluentapi的Lambda?

Java fluentapi的Lambda?,java,lambda,java-8,java-stream,fluent,Java,Lambda,Java 8,Java Stream,Fluent,尝试用流API中的匿名类替换lambdas(在代码下面),效果很好。我想了解test(T)方法所需的参数是如何从中生成的 兰姆达 list.stream() .map(String::length) .filter(t->t>4).count(); 匿名类 list.stream()//line1 .map(String::

尝试用流API中的匿名类替换lambdas(在代码下面),效果很好。我想了解test(T)方法所需的参数是如何从中生成的

兰姆达

                list.stream()
                .map(String::length)
                .filter(t->t>4).count();
匿名类

                list.stream()//line1
                .map(String::length)
                .filter(new Predicate<Integer>() {
                    @Override
                    public boolean test(Integer t) {//line 5
                        
                        return t>4;
                    }
                }).count();
list.stream()//第1行
.map(字符串::长度)
.filter(新谓词(){
@凌驾
公共布尔测试(整数t){//第5行
返回t>4;
}
}).count();
使用lambdas时,我们使用lambda表示法传递参数,但我不明白第5行的
整数t
是如何生成的。是由于
流中的
Fluent API
还是由于功能接口(lambda)

编辑:我对
lambda
版本很清楚,不明白
匿名类的版本是如何工作的?换句话说,它能在
Java1.7
中工作吗(如果我们编写了类似于
StreamAPI
的东西,我们就不会有lambdas了)


编辑:对于像我一样困惑的人,请看一看,一些聪明人简化了流API的实现

当你编写
t->t>4
时,Java自动推断出这个lambda的类型——它必须是
谓词
,假设它被传递到
流上的
过滤器
,然后自动计算出它必须是
(整数t)->t>4

,是的,它在Java 7中可以使用匿名类。(一些第三方图书馆正是这样做的,例如Guava's Fluentitable。)好的,谢谢。那么,是Fluent API负责这个功能吗?我的意思是,真正负责的不是“Fluent API”。这只是…这些语言特性是如何工作的。好的,java中的哪个特性,方法链接?但是我看不到这个关键字在这里被使用,通常在方法链接中使用。方法链接实际上不是一种语言特性,它只是一种使用语言的方式。它实际上与
谓词的使用根本没有关系。使用
也不是实现方法链接的必要条件。