Ich verwende Hibernate Validator API
, um die Felder auf meine Objekte zu validieren. Das Beispiel, wie es aussieht, ist unten.JSR 303 werfen Ausnahme auf alle Constraint-Verletzung
@NotNull @Size(min = 3, max = 8) String name;
@NotNull @Size(min = 3, max = 16) String surname;
@Size(min = 3, max = 10) String company;
// ...
Jetzt ist das Problem damit, dass ich mein Objekt konstruieren kann und keine Ausnahme geworfen wird. Beispielsweise.
Person p = new Person("a", "b", "c");
Dadurch werden keine Laufzeitausnahmen ausgelöst, stattdessen wird ein Objekt mit verletzten Einschränkungen erstellt. Und um die verletzten Einschränkungen zu erhalten, sollte eine Validator
Instanz explizit aus dem Client-Code aufgerufen werden. Ich bin nicht ganz sicher, warum sie es so gemacht haben, aber ich brauche die Konstruktion eines Objekts, das mit einer Ausnahme fehlschlägt, wenn die Felder des Objekts verletzt werden. So etwas wie:
Person p = new Person("a", "b", "c");
... würde eine Ausnahme auslösen. Und das ungültige Objekt konnte nicht erstellt werden. Das ist mein gewünschtes Verhalten.
Ist das möglich?
Sie verstehen, dass dies nur ein einfaches Beispiel ist, das versucht, meine Anforderung zu erklären? Das reale Objekt hat 30 Felder, verwendet ein Builder-Muster usw., also ist etwas, was Sie vorschlagen, unmöglich. Wie ich sagte, ich muss die Konstruktion fehlschlagen, wenn die Einschränkungen verletzt werden – wesleyy