If the application code base is going to use lot of enums, then I would prefer following solution, which I have used in my application.
Base Class
public class Enum {
    protected int _enumValue;
    protected Enum(int enumValue) {
        this._enumValue = enumValue;
    }
    public int Value() {
        return this._enumValue;
    }
}
Your enumerations will then follow these pattern
Actual Enum
public class DATE_FORMAT extends Enum {
    public static final int DDMMYYYY = 1;
    public static final int MMDDYYYY = 2;
    public static final int YYYYMMDD = 3;
    public DATE_FORMAT(int enumValue) {
        super(enumValue);
    }
}
And your code can consume this enum as follows
String getFormattedDate(DATE_FORMAT format) {
    String sDateFormatted = "";
    switch (format.Value()) {
        case DATE_FORMAT.DDMMYYYY : 
            break;
        case DATE_FORMAT.MMDDYYYY :
            break;
        case DATE_FORMAT.YYYYMMDD :
            break;
        default:
            break;
    }
    return sDateFormatted;
}
Caller can use the function as
void callerAPI() {
    DATE_FORMAT format = new DATE_FORMAT(DATE_FORMAT.DDMMYYYY);
    String sFormattedDate = getFormattedDate(format);
}
This is yet not full proof against intitializing derived Enum objects with any integer value. However it can provide good syntactic guideline to work in non-enum environment.