Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更正此代码以使其成为通用代码?_Java - Fatal编程技术网

Java 如何更正此代码以使其成为通用代码?

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

我开始学习编码,但我不知道如何生成通用的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().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请你回答你的问题。我将标记下面发布的代码,因为它不是答案。