"Enums are bad news," Diego's boss would often say, "they don't add any real value to the code, and they're that much more 'bloat' from Java. I've been coding in C for 20 years, and did just fine without them."

Despite being the senior Java architect, Diego's boss had deep-rooted distaste for Java. Diego didn't really understand why there was such a hatred against Enums specifically, until he stumbled across some of the architect's code.

public enum Status {
    CREATED,
    OPEN,
    CLOSE,
    TERMINATED;
}

... snip to actual usage of the enum ...

public Integer checkStatus(Status status){
    String statusStr=status.name();
    Integer checkedStatus=null;

    if (statusStr==Status.CREATED.name()||statusStr.equals(Status.CREATED.name())){
        checkedStatus=Status.CREATED.ordinal();
    }else if (statusStr==Status.OPEN.name()||statusStr.equals(Status.OPEN.name())){
        checkedStatus=Status.OPEN.ordinal();
    }else if (statusStr==Status.CLOSE.name()||statusStr.equals(Status.CLOSE.name())){
        checkedStatus=Status.CLOSE.ordinal();
    }else if (statusStr==Status.TERMINATED.name()||statusStr.equals(Status.TERMINATED.name())){
        checkedStatus=Status.TERMINATED.ordinal();
    }
    
    if(checkedStatus==null){
        return null; //Shouldn't never happen
    }else{
        return checkedStatus;
    }
}

Just for reference, how could be rewritten it in a single line:

public Integer checkStatus(Status status){
    return status.ordinal(); 
}
[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!