Java 如何更正此代码以使其成为通用代码?
我开始学习编码,但我不知道如何生成通用的CRUD Read方法。 为了进行测试,我将对象指定为Person类型,其中类的ID是标识卡。问题在于比较read方法发送的属性时,它只返回相同ID的元素Java 如何更正此代码以使其成为通用代码?,java,Java,我开始学习编码,但我不知道如何生成通用的CRUD Read方法。 为了进行测试,我将对象指定为Person类型,其中类的ID是标识卡。问题在于比较read方法发送的属性时,它只返回相同ID的元素 public Optional<P> read(String id){ return list.stream().filter(P -> P.equals(id)).findFirst(); } 公共可选读取(字符串id){ return list.stream().filt
public Optional<P> read(String id){
return list.stream().filter(P -> P.equals(id)).findFirst();
}
公共可选读取(字符串id){
return list.stream().filter(P->P.equals(id)).findFirst();
}
还有什么其他选项可以代替.equals()方法,因为当使用它时,它返回Optional.empty
非常感谢您的帮助您可以将
谓词
定义为参数:
公共可选读取(谓词
谓词){
返回lista.stream().filter(谓词).findFirst();
}
并按如下方式使用:
controladorPersona.read(p->“0202”.equals(p.getCedula());
然而,另一个选择是使用stringgetid()
之类的方法创建一个接口(例如HasId
),并在Persona
类中实现它。然后您可以在控件中定义泛型,如
。在这种情况下,read方法可能如下所示:
公共可选读取(字符串id){
返回lista.stream().filter(p->id.equals(p.getId())).findFirst();
}
这样做的目的是让ControladorPersona知道如何从元素中提取标识符。Plase展示了一个我们可以自己编译和运行的方法。您好,请在回答中附上代码。您需要根据某些内容比较这些通用字段。因此,这些泛型还需要边界(可能是Persona
的父类,一个类似#getName
的类)。然后你就可以过滤这个方法了。@SebastU请你回答你的问题。我将标记下面发布的代码,因为它不是答案。