2 votes

Solution générique Java pour obtenir le même comportement mais une entrée différente

J'ai ce morceau de code :

Name name = address.getName();
if (null != name && null != name.getFullName()) {
    addressInfo.setName(name.getFullName());
} else {
    addressInfo.setName(StringUtils.EMPTY);
}
Email emailProfile = address.getEmailAddresses();
if (null != emailProfile && emailProfile.hasPrimaryEmail()) {
    addressInfo.setEmail(emailProfile.getPrimaryEmail().getEmailAddress());
} else {
    addressInfo.setEmail(StringUtils.EMPTY);
}
VoicePhone voicePhoneProfile = address.getVoicePhones();
if (null != voicePhoneProfile && voicePhoneProfile.hasPrimaryPhone()) {
    addressInfo.setPhoneNumber(voicePhoneProfile.getPrimaryPhone().getPhoneNumber());
} else {
    addressInfo.setPhoneNumber(StringUtils.EMPTY);
}

Ils font fondamentalement la même chose, mais le comportement du getter et du setter est différent. Existe-t-il un moyen d'écrire une seule méthode générique pour transformer ces 3 blocs de code en 3 lignes de code ?

2voto

Makoto Points 23751

Je déconseille d'essayer de combiner ces méthodes. Il y a un gain plus simple que vous pouvez obtenir ici, en fait.

Regardez de plus près ce qu'ils font :

  • setName ne définit le nom complet que s'il existe, sinon il prend la valeur "empty" par défaut.
  • setEmail ne définit l'adresse électronique que si elle existe, sinon elle prend la valeur "vide" par défaut.
  • setPhoneNumber ne définit le numéro de téléphone que si un numéro de téléphone primaire existe, sinon il prend la valeur "empty" par défaut.

Appliquer les valeurs par défaut dans le haricot lui-même par opposition à la logique conditionnelle ici.

public class Name {
    private String name = StringUtils.EMPTY;
}

// and so forth for Email and VoicePhone

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X