Java 类作为使用 lambda 表达式的函数参数

标签 java lambda

我有 JUnit 测试(我无法修改),并且必须用 Java 8 编写程序。我感兴趣的测试部分是:

Set<Customer> mexicans = shop.filter(Customer.class, c -> c.getCountry().equals("Mexico"));
Set<Product> goldenWaffles = shop.filter(Product.class, p -> p.getBrand().equals("Golden") && p.getName().contains("Waffles"));

所以 filter 函数的第二个参数是 lambda 表达式,我将其作为 Predicate<Product> 类型的参数或Predicate<Customer> (我在这儿吗?)。问题是:我需要能够同时接受它们,但我不知道该怎么做。和第一个参数有关系吗?

最佳答案

您可能正在寻找类似的东西

public <T> void method(Class<T> clazz, Predicate<T> predicate) {
    // ...
    final Set<T> result = shop.filter(clazz, predicate);
}

关于Java 类作为使用 lambda 表达式的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23865643/

相关文章:

java - 限制 Postman 环境中 header 中返回的字符

java - 当用户输入文本时 Swing GUI 移动

c++ - 从 lambda 表达式创建仿函数

Java 函数指针和自动装箱

java - 同一类中多个面板的重绘方法

java - 通知功能在某些设备上崩溃

Java - 扫描器类 : correct usage

c++ - 为什么捕获的 lambda 不能应用于 std::valarray?

C# 3.5 DLR Expression.Dynamic 问题

c# - 使用 Func Delegate 进行错误检查