Ceci est une question assez courante, mais je dois dire que la question que vous suggérez est une copie de ne contient pas de solutions qui sont appropriées à notre situation. Au travail, nous utilisons xmlbeans sur une base de code de 8 ans et pour le dire délicatement, il n'est pas bien géré. Bien sûr, la vraie solution est que nous ne devrions pas utiliser null comme information (et probablement pas utiliser du tout xmlbeans), mais je cherche la manière la moins terrible de gérer le problème suivant:Manière pragmatique de gérer les vérifications nuls imbriquées dans une base de code Java xmlbeans existante?
Si nous avons un entité de Person, qui peut éventuellement avoir une subentité de Wallet, qui peut éventuellement avoir des subentities de WalletItems, qui peuvent éventuellement avoir une subentity de Card qui peut avoir un CardNumber, quelle est la manière la plus pratique de vérifier si une Person a au moins un CardNumber?
Nous avons trois solutions de travail, ainsi que d'un argument sur lequel l'équipe doit en tenir à:
isCardHolder(Person person){
if (person != null && person.getWallet != null &&
person.getWallet.getWalletItems != null &&
person.getWallet.getWalletItems.get(0) != null && // Just a dirty example, don't worry here
person.getWallet.getWalletItems.get(0).getCard != null &&
person.getWallet.getWalletItems.get(0).getCard.getCardNumber != null){
return true;
} else {
return false;
}
Ou:
isCardHolder(Person person){
Wallet wallet = (Person != null ? person.getWallet : null);
WalletItems[] walletItems = (wallet != null ? wallet.getWalletItems : null);
// etc etc
if (card.getCardNumber != null) {
return true;
} else {
return false;
}
}
Ou encore:
isCardHolder(Person person){
try {
if (person.getWallet.getWalletItems.get(0).getCard.getCardNumber != null){
return true;
}
} finally {
return false;
}
}
Ma préférence personnelle est de le graver et de recommencer, ou au moins d'abandonner xmlbeans afin que nous puissions utiliser Null O modèles de bject ou quoi que ce soit d'autre dans la question standard on this topic mais nous sommes coincés avec cela pour le moment, trop de choses en dépendent.