Es ist ein Konstruktor mit drei Parametern vom Typ Enum:Compiletime Validierung von Enum Parameter
public SomeClass(EnumType1 enum1,EnumType2 enum2, EnumType3 enum3)
{...}
Die drei Parameter vom Typ Enum sind nicht mit allen möglichen Werten kombiniert werden allowd:
Beispiel:
EnumType1.VALUE_ONE, EnumType2.VALUE_SIX, EnumType3.VALUE_TWENTY ist eine gültige Kombination.
aber die folgende Kombination ist nicht gültig:
EnumType1.VALUE_TWO, EnumType2.VALUE_SIX, EnumType3.VALUE_FIFTEEN
Jede der EnumTypes mit dem weiß-Werte es sein darf kombiniert:
EnumType1 und die beiden anderen eine isAllowedWith() Methode implementieren, um zu überprüfen, dass wie folgt:
public enum EnumType1 {
VALUE_ONE,VALUE_TWO,...;
public boolean isAllowedWith(final EnumType2 type) {
switch (this) {
case VALUE_ONE:
return type.equals(Type.VALUE_THREE);
case VALUE_TWO:
return true;
case VALUE_THREE:
return type.equals(Type.VALUE_EIGHT);
...
}
}
Ich muss diese Prüfung zur Kompilierzeit ausführen, da es in meinem Projekt von äußerster Wichtigkeit ist, dass die Kombinationen zur Laufzeit IMMER korrekt sind.
Ich frage mich, ob es eine Möglichkeit gibt, diese Prüfung mit benutzerdefinierten Anmerkungen auszuführen?
ist Jede Idee geschätzt :)
Dies ist auf jeden Fall, dass etwas, das Sie können und mit tun sollten [apt] (http://docs.oracle.com/javase/1.5.0/docs/guide/apt/GettingStarted.html), obwohl ich nicht bin vertraut genug, um eine qualifizierte Antwort zu schreiben. –