错误:
代码
@Test public void pl(){ List<String> list=new ArrayList(); list.add("1"); list.add("1"); Predicate<String> nonEmptyStringPredicate = (String s)->!s.isEmpty(); List filter = filter2(list, nonEmptyStringPredicate); System.out.println(filter); } public List<T> filter2(List<T> list, Predicate predicate){ List<T> objects = new ArrayList<>(); for (T s : list) { if (predicate.test(s)){ objects.add(s); } } return objects; }
修改
原因
/**
1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型。