我有 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/