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

时间:2014-05-26 08:12:46

标签: 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>类型的参数(我在这里吗?)。问题是:我需要能够兼顾他们,我不知道该怎么做。它与第一个参数有关吗?

1 个答案:

答案 0 :(得分:2)

可能你正在寻找像

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