繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM