1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class MyObject {
/** Méthode privée de vérification de la chaine en entrée */
private static boolean isValid(String bla) {
return true; // ...;
}
/** Constructeur privée permettent de 'sauter' la vérification */
private MyObject (String bla, boolean checkEntry) {
if (checkEntry && MyObject.isValid(bla)==false) {
throw new IllegalArgumentException("invalid string");
}
// Code du constructeur
}
/** Constructeur public qui impose la vérification */
public MyObject(String bla) throws IllegalArgumentException {
this(bla, true); // On se contente d'appeller le constructeur privée
}
/** Factory static qui évite la génération de l'exception */
public static MyObject create(String bla) {
if (MyObject.isValid(bla)) {
return new MyObject(bla, false); // Appel du constructeur privé
}
return null;
}
} |