📅  最后修改于: 2023-12-03 15:01:28.110000             🧑  作者: Mango
在 Java 8 中,引入了一个新的函数式接口 ObjIntConsumer。这个接口代表了一个接受一个对象和一个 int 值的操作,并且不返回任何结果。它通常用于对对象的某个属性进行操作或修改。
ObjIntConsumer 接口定义如下:
@FunctionalInterface
public interface ObjIntConsumer<T> {
void accept(T t, int value);
}
该接口只有一个方法 accept,它接受一个对象和一个 int 值作为参数,并且没有返回值。
下面是一个使用 ObjIntConsumer 接口的示例,展示了如何使用该接口来操作对象的属性。
import java.util.ArrayList;
import java.util.List;
import java.util.function.ObjIntConsumer;
class Product {
private String name;
private int price;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
@Override
public String toString() {
return "Product [name=" + name + ", price=" + price + "]";
}
}
public class ObjIntConsumerExample {
public static void main(String[] args) {
List<Product> products = new ArrayList<>();
products.add(new Product("Apple", 5));
products.add(new Product("Orange", 3));
products.add(new Product("Banana", 2));
// 使用 ObjIntConsumer 接口来修改产品的价格
ObjIntConsumer<Product> increasePrice = (product, value) -> {
product.price += value;
};
// 增加 1 元价格
products.forEach(p -> increasePrice.accept(p, 1));
// 打印修改后的产品列表
products.forEach(System.out::println);
}
}
输出结果:
Product [name=Apple, price=6]
Product [name=Orange, price=4]
Product [name=Banana, price=3]
在上面的示例中,我们使用了 ObjIntConsumer 接口来定义了一个 lambda 表达式 increasePrice,该表达式接受一个 Product 对象和一个 int 值,并将该值增加到产品的价格上。然后,我们使用 forEach 方法遍历了产品列表,并通过调用 increasePrice 来修改产品的价格。最后,打印出修改后的产品列表。
这就是 ObjIntConsumer 接口的一个简单示例,它展示了如何使用该接口来操作对象的属性。您可以根据自己的业务需求,进一步扩展和使用这个接口。