Pourquoi les concepteurs Java n'ont-ils pas créé des versions statiques des méthodes de manipulation de chaînes dans la java.lang.Stringclasse? Je fais référence aux méthodes suivantes, mais la question peut également être étendue à d'autres méthodes non statiques de la classe.
concat(String) substring(int, int)
replace(char, char) toLowerCase()
replace(CharSequence, CharSequence) toLowerCase(Locale)
replaceAll(String, String) toString()
replaceFirst(String, String) toUpperCase()
split(String) toUpperCase(Locale)
split(String, int) trim()
substring(int)
Le fait de n'avoir que des versions non statiques de ces méthodes force une vérification nulle explicite partout où une telle méthode doit être appelée. Par exemple, un simple appel example = example.trim()entraînerait NullPointerException if String example = null. Le programmeur doit donc effectuer la vérification nulle du passe-partout suivante:
if (example != null)
example = example.trim();
// OR:
example = (example==null) ? null : example.trim();
example = (example==null) ? null : example.substring(5);
J'imagine qu'il aurait été beaucoup plus pratique d' Stringavoir eu des versions statiques de ces méthodes (peut-être même exclusivement ), qui prendraient la chaîne d'entrée comme premier argument:
example = String.trim(example);
example = String.replace(example, 'a', 'b');
example = String.substring(example, 5);
Cela aurait conduit à un code plus propre écrit par les programmeurs qui aurait automatiquement pris en charge les cas nuls en renvoyant simplement null, plutôt que de forcer les programmeurs à gérer explicitement les cas nuls. Le retour de null a du sens pour moi, car la manipulation d'une chaîne nulle devrait entraîner une chaîne nulle , pas une erreur.
Pourquoi les concepteurs Java n'ont-ils pas pensé à cela lorsqu'ils ont conçu la Stringclasse en Java 1 ou Java 2, ou même ajouté une telle fonctionnalité dans une version Java ultérieure?
nullest un état exceptionnel et doit être traité explicitement.
Maybe<T>type, je suppose?
string name = employee?.personalData?.name. Tout comme un raccourci pour tous ces if (employee != null)s répétitifs . Question SO connexe: stackoverflow.com/questions/1196031/…