Initialisieren Sie alle String-Mitglieder mit einem leeren String
Möchte ich alle Strings die Mitglieder eines Objekts, eine leere Zeichenfolge, wenn Sie null sind.
Pseudocode:
foreach member in object {
if (member instanceof String and member == null) {
member = '';
}
}
Was ist der einfachste Weg, das zu erreichen?
Framework /tool, dass ich verwenden kann?
Schreibe meine eigene Lösung per reflection?
- Für welchen Zweck? Es ist einfacher zu tun, dass in den entsprechenden get () - Methode, wenn Sie immer es nennen, als es ist, Einfluss auf den tatsächlichen Wert.
- Die Klassen werden generiert von JAXB2, so dass ich nicht wollen, Sie zu ändern.
- Wenn Sie ein
.xsd
definieren Sie das schema für JAXB2 können Sie definierendefault
Werte direkt in die.xsd
. - Leider ist das schema nicht unter meiner Kontrolle.. Aber ich Stimme zu, dass es besser wäre, das problem zu lösen gibt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die reflektion verwenden, um eine Liste aller Felder eines Objekts und dann überprüfen, und ändern Sie es. Sie müssen möglicherweise ändern Sie die Zugriffsebene, wenn Sie privat sind. Finden Sie eine Menge von tutorials auf, dass bei der Google-Suche, z.B. diese eine.
Versuchen, AspectJ:
Diese werden schneller in der run-time, da dieser Aspekt wird kompiliert werden zu byte-code,
andernfalls Reflexion verwendet werden, in run-Zeit und verlangsamt Ihre app.
Andere Möglichkeit ist das schreiben ein Programm, das generiert code setzt leere Zeichenfolgen an die Mitglieder bestimmter Objekte.
Gunsten von wiederverwendbaren design sollten Sie sich überlegen, einen default-Wert für null-Werte genau wie bei Apache üblich defaultString API, so etwas wie dieses:
Können Sie auch prüfen, mit
defaultString(String str,String defaultStr)
so dass Sie die Möglichkeit haben, die änderung der default-Wert sollte es irgendeinen Grund, dies zu tun.StringUtils Dokumentation