gpt4 book ai didi

java - 如何从同一方法中查看对象的不同参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:08 24 4
gpt4 key购买 nike

我有一个联系人类,其中包含姓名、电子邮件和地址。我将它们存储在 ArrayList 中。现在我有三种不同的方法,用于让用户按姓名、电子邮件或地址搜索联系人。除了比较语句外,每个都与其他完全相同,一个有 name.equals(contact.getName()),另一个有 email.equals(contact.getEmail()) 最后一个有 address.equals(contact.getAddress())。我知道 DRY 原则,我认为它可以应用在这里,有没有办法避免在这种情况下重复我自己?

public void searchName(String name)
{
for(int i = 0; i < contacts.size(); i++)
{
Contact contact = contacts.get(i);

if(name.equals(contact.getName())
{
printContactInfo(contact);
}
}
}

其他两种方法完全相同,但不是使用姓名,而是使用电子邮件或地址。

最佳答案

您可以将其作为函数传递。 Java 8 的语法增强非常适合此类用例:

public void searchName(String name) {
search(name, Contact::getName);
}

public void searchEmail(String email) {
search(email, Contact::getEmail);
}

public void searchAddress(String address) {
search(address, Contact::getAddress);
}

private void search(String s, Function<Contact, String> f) {
contacts.stream().filter(c -> f.apply(c).equals(s)).forEach(this::printContactInfo);
}

关于java - 如何从同一方法中查看对象的不同参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52393308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com