Java使用者可以接受和返回布尔值或字符串

时间:2018-06-23 07:19:56

标签: java lambda syntax interface

这是具有用法的普通消费者

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);
}

2 个答案:

答案 0 :(得分:5)

退货的消费者不再是消费者。它变成了Predicate<String>

Predicate<String> consumer = (str) -> {
    return str.equals("yes"); 
};

您在标题中还提到了希望功能接口返回String。在这种情况下,请使用Function<String, String>

答案 1 :(得分:2)

对于要传递String并获得boolean的情况,我们可以使用Predicate<String>。如果我们想返回以下原始之一,则有类似的函数:

rest of the java.util.function-java.util.stream package一致,原语<primitive>Predicatebyteshort没有其他char接口和float

对于要传递String并获得String的情况,我们可以使用UnaryOperator<String>

对于一般情况下,我们希望通过一些T并获得一些R,我们可以使用Function<T, R>

但是,这是否提高了代码的可读性是另一个问题...