这是具有用法的普通消费者
public static void main(String[] args){
Consumer<String> consumer = (str) -> {
//stuff
};
consumer.accept(args[0]);
}
这就是我要尝试做的(使消费者返回布尔值)
public static void main(String[] args){
Consumer<String> consumer = (str) -> {
return str.equals("yes"); //type mis-match error because consumer is void not boolean
};
boolean a = consumer.accept(args[0]); //type mis-match error because consumer is void not boolean
}
如何操纵消费者以布尔值形式返回?
显然没有创建一个全新的界面。...(下)
public interface ConsumerB {
boolean accept(String s);
}
答案 0 :(得分:5)
退货的消费者不再是消费者。它变成了Predicate<String>
:
Predicate<String> consumer = (str) -> {
return str.equals("yes");
};
您在标题中还提到了希望功能接口返回String
。在这种情况下,请使用Function<String, String>
。
答案 1 :(得分:2)
对于要传递String
并获得boolean
的情况,我们可以使用Predicate<String>
。如果我们想返回以下原始之一,则有类似的函数:
int
:IntPredicate<String>
,long
:LongPredicate<String>
和double
:DoublePredicate<String>
。与rest of the java.util.function
-和java.util.stream
package一致,原语<primitive>Predicate
,byte
,short
没有其他char
接口和float
。
对于要传递String
并获得String
的情况,我们可以使用UnaryOperator<String>
。
对于一般情况下,我们希望通过一些T
并获得一些R
,我们可以使用Function<T, R>
。
但是,这是否提高了代码的可读性是另一个问题...