“使用”的目的;?超级T";在Java8中,消费者和

“使用”的目的;?超级T";在Java8中,消费者和,java,java-8,Java,Java 8,我在看Java8的功能接口消费者。我可以看到一个默认方法,然后。我知道该方法用于将消费者的信息链接在一起。以下是第二种方法的代码: default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.accept(t); }; } 默认消费者,然后(消费者假设您有一个消费者

我在看Java8的功能接口消费者。我可以看到一个默认方法,然后。我知道该方法用于将消费者的信息链接在一起。以下是第二种方法的代码:

default Consumer<T> andThen(Consumer<? super T> after) {
    Objects.requireNonNull(after);
    return (T t) -> { accept(t); after.accept(t); };
}

默认消费者,然后(消费者假设您有一个
消费者
和一个
消费者
。当然,您可以将
传递到这些
接受
方法中的任何一个,因为
动物


但是,在Java中,
消费者
消费者
之间没有继承关系,原因已经在本网站的其他问题上讨论过了。因此,为了让我们链接任何其他将接受
狗的
消费者
,我们需要将其声明为
消费者,假设您有
>消费者
消费者
。当然,您可以将
传递到这些
接受
方法中的任何一种,因为
动物


然而,在Java中,
消费者
消费者
之间没有继承关系,原因已经在本网站的其他问题上讨论过了。因此,为了让我们能够链接任何其他将接受
消费者
,我们需要将其声明为
消费者理解的“PEC是什么?”(生产者延伸消费者超级)?“。我在这里问的是使用的目的是什么"你说这不是一个复制品。好吧,我想你是在问这个问题,但是看起来你想知道这个特定的案例。重新打开。让我们看看其他人有什么要说的。简而言之,下界是允许更多一般对象的消费者。例如,
Consumer ci=list::add;
。现在,除了将该元素添加到列表中之外,您还可能希望将该元素打印到屏幕上。如果您碰巧已经定义了第二个消费者,即
Consumer co=System.out::println;
,您将无法通过使用
Consumer来链接两个消费者。如果<代码>消费者。然后
只接受了
消费者
,因为
co
不是
消费者
(as
ci
)。谢谢Federico!!我感到困惑,但现在明白了。我明白了“什么是PECS(生产者扩展消费者超级)?”。我在这里问的是使用的目的是什么"你说这不是一个复制品。好吧,我想你是在问这个问题,但是看起来你想知道这个特定的案例。重新打开。让我们看看其他人有什么要说的。简而言之,下界是允许更多一般对象的消费者。例如,
Consumer ci=list::add;
。现在,除了将该元素添加到列表中之外,您还可能希望将该元素打印到屏幕上。如果您碰巧已经定义了第二个消费者,即
Consumer co=System.out::println;
,您将无法通过使用
Consumer来链接两个消费者。如果<代码>消费者。然后
只接受了
消费者
,因为
co
不是
消费者
(作为
ci
)。谢谢Federico!!我感到困惑,但现在明白了。但是为什么不使用“然后(消费者之后)”或“然后”呢(Consumer@SahilGupta
然后(消费者之后)
将禁止在
消费者cd
cd之后链接
消费者ca
。然后(ca)
-但是
消费者
是所有
狗的有效消费者。
(Consumer@ThomasKl阿德格尔:谢谢。这就回答了我的问题:)但是为什么不使用“and then(Consumer after)”或“and then”呢(Consumer@SahilGupta
和第(消费者之后)
将禁止在
消费者cd
之后链接
消费者ca
和第(ca)
-但是
消费者
是所有
狗的有效消费者。
和(Consumer@ThomasKl阿德格尔:谢谢。这回答了我的问题:)