小编Wi-*_*-Al的帖子

如何按类型动态创建通用lambda实现?

例如,我有课

public class Human {

  private String name;

  ...
}
Run Code Online (Sandbox Code Playgroud)

我想实现这样的事情:

(1)

List<Human> humans =  initHumans();
Equals<Human> humanEquals = new Equals<>();
Predicate<Human> filter = humanEquals.filter("name", "John");
List<Human> filteredHumans = humans
    .stream()
    .filter(filter)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

等于:

public class Equals<T> extends AbstractPredicate<T> {

  public java.util.function.Predicate<T> filter(String fieldName, String fieldValue) {
    ....
  }  
}
Run Code Online (Sandbox Code Playgroud)

是否提供了(1)行为的有效工具过滤方法?

我想回复Predicate这样的:

Predicate<Human> predicate = human -> human.getName().equals("John");
Run Code Online (Sandbox Code Playgroud)

同样应该适用于其他类:

Predicate<Car> filter = humanEquals.filter("color", "red");
//like this:
Predicate<Car> predicate= human -> human.getColor().equals("red");
Run Code Online (Sandbox Code Playgroud)

java generics reflection predicate java-8

1
推荐指数
1
解决办法
450
查看次数

标签 统计

generics ×1

java ×1

java-8 ×1

predicate ×1

reflection ×1