我有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>
类型的参数(我在这里吗?)。问题是:我需要能够兼顾他们,我不知道该怎么做。它与第一个参数有关吗?
答案 0 :(得分:2)
可能你正在寻找像
这样的东西public <T> void method(Class<T> clazz, Predicate<T> predicate) {
// ...
final Set<T> result = shop.filter(clazz, predicate);
}