Java 我如何在功能接口';什么是直接声明?

Java 我如何在功能接口';什么是直接声明?,java,Java,最近,我想到了创建以下方法的想法: /**返回一个{@link Predicate},用于测试其所有元素是否匹配作为参数传递的条件*/ 私有静态谓词AlliteLableElementsMatch(谓词elementMatchCondition){ 返回iterable->stream(iterable).allMatch(elementMatchCondition); } 然后我决定声明函数-字段,而不是声明上面的方法。 我能提供的最接近的不可编译的解决方案是: 私有静态最终函数>>Alli

最近,我想到了创建以下方法的想法:

/**返回一个{@link Predicate},用于测试其所有元素是否匹配作为参数传递的条件*/
私有静态谓词AlliteLableElementsMatch(谓词elementMatchCondition){
返回iterable->stream(iterable).allMatch(elementMatchCondition);
}
然后我决定声明
函数
-字段,而不是声明上面的方法。
我能提供的最接近的不可编译的解决方案是:

私有静态最终函数>>AlliteLableElementsMatch=
条件->可编辑->流(可编辑)。所有匹配(条件);
由于以下原因,未对其进行编译(IDE在
allMatch(…)
中突出显示
条件

我的问题是:

  • 它是以这种方式实现的,还是我误解了使用功能接口的概念
  • 是否可以像我所展示的方法一样专门化
    函数
    -s声明中的某些类型

  • 对于类型系统,
    谓词中的
    谓词hello中的
    。谢谢你的回答。我想声明的是一个字段,而不是方法。你认为可能吗?@GromovAnton不可能,你可能想阅读更多关于“通配符捕获”方法的内容……作为结论,在这种情况下,没有办法告诉编译器这两个“?”都与同一类型相关,对吗?@GromovAnton是的,这是正确的。据说捕获转换无处不在
    private static <T> Function<Predicate<T>, Predicate<Iterable<T>>> func() {
        return condition -> iterable -> StreamSupport.stream(iterable.spliterator(), false).allMatch(condition);
    }