[英]How do I correct this code to make it generic?
我开始学习编码,但我不知道如何生成通用的 CRUD Read 方法。 为了进行测试,我将对象分配为 Person 类型,其中类的 ID 是身份证。 问题是当比较 read 方法发送的属性时,它只返回相同 ID 的元素。
public Optional<P> read(String id){
return list.stream().filter(P -> P.equals(id)).findFirst();
}
还有什么其他选项可以代替 .equals() 方法,因为在使用它时,它返回 Optional.empty?
非常感谢您的帮助
您可以将Predicate<P>
定义为参数:
public Optional<P> read(Predicate<P> predicate){
return lista.stream().filter(predicate).findFirst();
}
并使用它如下:
controladorPersona.read(p -> "0202".equals(p.getCedula()));
然而,另一种选择是使用String getId()
之类的方法创建一个接口(例如HasId
String getId()
并在Persona
类中实现它。 然后你可以在ControladorPersona
定义泛型,比如<P super HasId>
。 在这种情况下,读取方法可能如下所示:
public Optional<P> read(String id){
return lista.stream().filter(p -> id.equals(p.getId())).findFirst();
}
这个想法是让 ControladorPersona 知道如何从元素中提取标识符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.