gpt4 book ai didi

java - 使用谓词创建函数

转载 作者:行者123 更新时间:2023-12-02 02:08:19 24 4
gpt4 key购买 nike

我是 Java 8 的新手,我正在尝试使用谓词和函数。我有我的 pojo 类产品,它有 Long Id 、 String 类别。我创建了谓词“fruits & Drinks”,分别检查 1000 到 2000 和 3000 到 4000 之间的 Id。

我还创建了一个函数,它将产品对象的类别设置为“水果”/“饮料”。现在,为了检查产品的 id 范围,我在条件语句中使用谓词,该谓词向我显示错误为“多个标记”,当相同的代码放置在 if/else block 中时,绝对按预期工作

//谓词

          Predicate <Product> checkFruitsLimitProduct = (product) -> product.getId().intValue() >= 1000 && product.getId().intValue() < 2000;

Predicate <Product> checkDrinksLimitProduct = (product) -> product.getId().intValue() >= 3000 && product.getId().intValue() < 4000;

//带条件语句的函数

      Function <Product, Product> setCategory = (product) -> {

checkFruitsLimitProduct.test(product) ? product.setCategory("Fruits") : checkDrinksLimitProduct.test(product))?
product.setCategory("YS") : product.setCategory("YS");
return product;

};

//带有 If/else block 的函数可以正常工作

        Function <Product, Product> setCategory = (product) -> {
if(checkFruitsLimitProduct.test(product)) {
product.setCategory("Fruits") ;
}else if(checkDrinksLimitProduct.test(product)) {
product.setCategory("Drinks");
}else {
product.setCategory("YS");
}
return product;
};

//打印函数值

          Product p1 = new Product(1000L);
Product p2 = new Product(3000L);
System.out.println(setCategory.apply(p1));
System.out.println(setCategory.apply(p2));

条件语句错误为:线程“main”java.lang.Error中的异常: Unresolved 编译问题

最佳答案

三元运算符实际上不应该用于产生副作用。但是,如果您想完成嵌套三元组来设置类别,您应该从 setCategory

返回 Product
public Product setCategory(String category) {
this.category = category;
return this;
}

那么你的函数可以写成

Function<Product, Product> setCategory = (product) -> checkFruitsLimitProduct.test(product) ? product.setCategory("Fruits") :
checkDrinksLimitProduct.test(product) ? product.setCategory("Drinks") : product.setCategory("YS");

关于java - 使用谓词创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57344578/

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