gpt4 book ai didi

java - 如何专门输入功能接口(interface)的直接声明?

转载 作者:行者123 更新时间:2023-12-04 08:33:01 26 4
gpt4 key购买 nike

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

/** Returns a {@link Predicate} which tests whether all its elements match a condition passed as argument. */
private static <T> Predicate<Iterable<T>> allIterableElementsMatch(Predicate<T> elementMatchCondition) {
return iterable -> stream(iterable).allMatch(elementMatchCondition);
}
然后我决定声明 Function -field 而不是在上面声明一个方法。
最接近的 无法编译 我可以提供的解决方案是这个:
private static final Function<Predicate<?>, Predicate<Iterable<?>>> allIterableElementsMatch = 
condition -> iterable -> stream(iterable).allMatch(condition);
由于以下原因,这未编译(IDE 在 condition 内突出显示 allMatch(...)):

我的问题:
  • 它可以以这种方式实现还是我只是误解了使用功能接口(interface)的概念?
  • 是否可以在 Function 中专门化某些类型? -s 声明就像我展示的方法一样?
  • 最佳答案

    对于类型系统,?来自 Predicate<?>?来自 Predicate<Iterable<?>>是不同的东西。你可以做:

    private static <T> Function<Predicate<T>, Predicate<Iterable<T>>> func() {
    return condition -> iterable -> StreamSupport.stream(iterable.spliterator(), false).allMatch(condition);
    }

    关于java - 如何专门输入功能接口(interface)的直接声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64936012/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com